Я пытаюсь создать модальное всплывающее окно (например, для подтверждения да/нет), чтобы код не продолжал выполняться до тех пор, пока не будет получено ответное сообщение. Я знаю, что рекомендуемый метод заключается в добавлении обратных вызовов к каждой кнопке (пункт меню), но этот метод создает проблему, когда меню является частью цикла, и один из результатов может быть «перерыв» из цикла, а не функцией вызов. Во всяком случае, я пришел с кодом здесь, используя Jquery 1,3 всплывающий виджет:Попытка создания модального всплывающего меню
var $popUp;
var popupResult;
function wait()
{
if (popupResult == null) {
setTimeout(wait, 100);
}
else
return;
}
function CreatePopupMenu(title)
{
popupResult = null;
// for safety, timeout the popup if it isn't answered
setTimeout(function(){ popupResult = false; }, 3000);
$popUp = $("<div/>").popup({
dismissible: false,
theme: "c",
afteropen: function() {
while (popupResult == null)
wait();
}
}).on("popupafterclose", function()
{
$(this).remove();
});
$("<h4/>", { text: title }).appendTo($popUp);
}
Проблема заключается в том, всплывающий на самом деле не появляется, то код выполняется прямо в «afteropen» обратного вызова. Если всплывающее окно не отображается, пользователь не может использовать кнопку для установки «popupResult», поэтому ожидание продолжается навсегда. Если я удалю обратный вызов «afteropen», всплывающее окно появится как ожидалось, но теперь «popupResult» остается пустым (он будет установлен обратными вызовами на кнопках, которые добавляются в меню до его открытия). Вспомогательный вопрос заключается в том, почему моя «формулировка выхода» с более длинным таймаутом не срабатывает?
Какую всплывающую библиотеку/виджет вы используете? – hamstu
Обратите внимание, что использование оператора double equals в javaScript '! PopupResult == false == null == undefined == 0 == '' == NaN'. просто используйте не оператор, а для специальных проверок тройка равна, например, это «null! == false». – metadings
Я использую jQuery mobile 1.3.1. Хороший вопрос об операторах ==, но это один простой пример - я буду его менять, чтобы popupresult мог быть 0,1,2 и т. Д., В зависимости от того, какая кнопка была нажата. – quilkin