2015-04-10 2 views
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> 
+0

Я не понимаю ваши '.each()' loops. Они просто проверяют одно и то же каждый раз, не делая ничего с 'i' или' this'. – Barmar

+0

Вам не нужно использовать '$ (function ...)' внутри обработчика событий. Это нужно только обернуть вокруг кода jQuery верхнего уровня. – Barmar

+0

Если вы хотите только один раз отобразить диалоговое окно, установите переменную вне цикла в значение true. Перед отображением диалогового окна проверьте, установлен ли он. Если это так, отобразите диалог и установите для переменной значение false. – Barmar

ответ

0

изменения e.preventDefault(); вернуть false; сделал трюк.