Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2011, 18:40
Новичок на форуме
Отправить личное сообщение для Last1971 Посмотреть профиль Найти все сообщения от Last1971
 
Регистрация: 01.09.2011
Сообщений: 2

Как сделать действительно модальный UI Dialog?
Вешаем модальный диалог на #someconfirmdialog, но Следующтий код вешает браузер. а) почему? б) что можно придумать взамен
$('#someconfirmdialog').dialog('open');
while ($('#someconfirmdialog').dialog('isOpen'));

Суть в том что бы последующий код не выполнялся, пока пользователь не сделал выбор в диалоге, а если еще глубже это вызывается внутри beforSubmit при редактировании таблицы jqgrid.
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2011, 19:02
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Ответ очевиден: нужно сделать по-нормальному!
Если это связано с сабмитом формы, значит при вызове submit ничего не отправляем, вызываем диалог, а он уже вызывает или не вызывает submit.
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2011, 23:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Last1971
почему?
Потому что у вас бесконечный цикл.

Сообщение от Last1971
что можно придумать взамен
Ничего.
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2011, 06:40
Новичок на форуме
Отправить личное сообщение для Last1971 Посмотреть профиль Найти все сообщения от Last1971
 
Регистрация: 01.09.2011
Сообщений: 2

Все немного сложнее. Есть таблица:
$('#sometable').jqGrid(...);

Есть форма добавления записей в таблицу:
$("#sometable").jqGrid("navGrid","#somepager",{...},
{width:420,afterSubmit:processAddEdit,closeOnEscape:true,closeAfterEdit:true,afterShowForm : datep ,beforeSubmit:checkSum},
...);

Ну и задача, проверить введенные данные на предмет что такие уже есть в базе, т.е. это возможно, иначе просто бы сделал уникальный ключ, но чаще просто бывает ошибкой. И если данные совпали то выдать модальный диалог, продолжаем "да" "нет"? Т.е. вызывается следующая функция:
function checkSum(postdata, formid){
var a=$.ajax({async:false,
                   url:"checksum.php",
                   data{date:postdata.date,sum:postdata.sum,supplier:postdata.supplier},
                   dataType:'text'});
if (a.responseText=='netutut') checkFlag=true;
else {
    $( "#somedialog" ).html('Number='+a.responseText);
    $( "#somedialog" ).dialog('open');
}
//    while ($( "#somedialog" ).dialog('isOpen')) {}          
return [checkFlag,'!!!'];
}

Но! Происходит добавление записи на фоне висящего модального диалога, а если раскоментировать while, то получаем бесконечный цикл.
И вот в каком месте тут перехватить отправку данных на сервер я пока не понимаю.
Но если заменить вызов диалога на
checkFlag=confirm('Number='+a.responseText);

То все работает как надо, т.е. отправка данных происходит, только в случае согласия пользователя.

Последний раз редактировалось Last1971, 02.09.2011 в 07:14.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать реакцию на изменение любого элемента формы. Mik Events/DOM/Window 3 28.07.2011 08:52
Как убрать hover? Либо как сделать стрелки статичными? krusty36 Элементы интерфейса 1 13.07.2011 09:20
Как лучше сделать виджет? comentator Элементы интерфейса 0 25.03.2011 08:44
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Многостраничная галерея на lightbox.js Как сделать? MASTER Общие вопросы Javascript 9 24.07.2009 14:38