0
Я пытаюсь остановить jquery ui dialogs от всплывающих окон после того, как 1 условие выполнено на форме submit. Один диалог за событие - это то, что я ищу. Вид прерывания, если условие выполнено. В настоящее время все диалоги появляются после закрытия. Я попробовал stopPropagation и stopImmediatePropagation без эффекта. Мой код следующим образом:Jquery Ui dialog on form submit
$('#myForm').on('submit',function(e){
if ($("#tramA").is(':checked') && !$('.tramAChecked:checked').length) {
$("#tramA-message").dialog({
modal: true,
draggable: false,
resizable: false,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
});
e.preventDefault();
}
if ($("#tramB").is(':checked') && !$('.tramBChecked:checked').length) {
$("#tramB-message").dialog({
modal: true,
draggable: false,
resizable: false,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
});
e.preventDefault();
}
});
HTML:
<div id="tramB-message" title="Warning">
<p>
<span class="ui-icon ui-icon-alert" style="float:left; margin:3px 7px 50px 0;"></span>
You selected "Tram B hall" but did not select a tram option!
</p>
</div>
<div id="tramA-message" title="Warning">
<p>
<span class="ui-icon ui-icon-alert" style="float:left; margin:3px 7px 50px 0;"></span>
You selected "Tram A hall" but did not select a tram option!
</p>
</div>
Я не понимаю ваши '.each()' loops. Они просто проверяют одно и то же каждый раз, не делая ничего с 'i' или' this'. – Barmar
Вам не нужно использовать '$ (function ...)' внутри обработчика событий. Это нужно только обернуть вокруг кода jQuery верхнего уровня. – Barmar
Если вы хотите только один раз отобразить диалоговое окно, установите переменную вне цикла в значение true. Перед отображением диалогового окна проверьте, установлен ли он. Если это так, отобразите диалог и установите для переменной значение false. – Barmar