2013-06-13 7 views
6

Ich bin mir sicher, dass dies hier schon oft gefragt wurde. Die latest eine, die ich sah, war auf Dez. 2012. Aber ich würde gerne fragen, ob jemand eine Fix/bessere Umgehung für dieses Problem hat.Wie Skript bei Verwendung von jQuery Dialog zu stoppen?

Ich verwende jQueryUI Dialog und ich würde fragen, ob es zu stoppt die Skriptausführung möglich ist, wenn der Dialog erscheint und der Benutzer eine Antwort noch nicht ausgewählt. Genau wie das Javascript confirm() tut.

Hier ist, was ich bisher:

jQuery

$("#GlobalDialogBox").dialog({ 
     modal: true, 
     buttons: { 
     "Yes": function() { 
      callbackFunctionTrue(); 
      $(this).dialog('close'); 
     }, 
     "No": function() { 
      callbackFunctionFalse(); 
      $(this).dialog('close'); 
     } 
     } 
    }); 

    alert("This should fire after answering the dialog box."); //but this fires as soon as the dialog pops up.. :(

Die alert ist ein gemeinsamer Teil des Skripts, der ausgelöst wird, nachdem das Dialogfeld unabhängig von der Antwort zu beantworten. Auf meinem Fix habe ich einfach die alert in und callbackFunctionFlase() eingefügt und es macht den Job.

Aber was, wenn ich das nicht möchte? Wie würde ich das Skript stoppen, wenn das Dialogfeld erscheint, damit ich meine Codes unter dem dialog Skript frei hinzufügen kann? Hat jemand eine bessere Lösung? Jede Hilfe wäre willkommen! Danke im Voraus! :]

+0

http://stackoverflow.com/a/6924588/1166285 –

Antwort

3

Wenn der Dialog geschlossen wird, löst er das Close Event aus. Sie können das tun, indem Sie Ereignis-Listener zu Ihrem Dialog Hinzufügen:

$("#GlobalDialogBox").on("dialogclose", function(event, ui) { 
     alert("something"); 
}); 

oder in konsistenter Weise:

$("#GlobalDialogBox").dialog({ 
    modal: true, 
    buttons: { 
     "Yes": function() { 
      callbackFunctionTrue(); 
      $(this).dialog('close'); 
     }, 
     "No": function() { 
      callbackFunctionFalse(); 
      $(this).dialog('close'); 
     } 
    }, 
    close: function(event, ui){ 
     alert("something"); 
    } 
}); 
-2

können Sie die Rückkehr verwenden, um die Funktion zu stoppen.

+0

er wnats es zu pausieren, nicht zu stoppen – chiliNUT

1

Sie können nicht wirklich willkürlich Skriptausführung unterbrechen. Callback-Funktionen sind in diesem Fall die beste Lösung. Fügen Sie unter den Schaltflächenoptionen im Dialogfeld einen Close-Event-Handler hinzu und fügen Sie Ihren Alert und anderen Code ein, den Sie nach dem Schließen des Dialogfelds ausführen möchten.

0

Nicht sicher, warum Sie das nicht möchten. Was Sie implementiert haben, ist dasselbe, das ich in der gleichen Situation implementiert habe, und es hat gut funktioniert. Starten Sie den Dialog in seiner eigenen JavaScript-Funktion und starten Sie Ihre Ja/Nein-Funktionen basierend darauf, welches Element angeklickt wird. Keine Benachrichtigungsbox erforderlich.

1
function dialog_confirm(){ 
    $("#dialog-confirm").dialog({ 
    //autoOpen: false, 
    resizable: false, 
    height:140, 
    modal: true, 
    buttons: { 
     "Delete all items": function() { 
     $(this).dialog("close"); 
     dialog_confirm_callback(true); 
     }, 
     Cancel: function() { 
     $(this).dialog("close"); 
     dialog_confirm_callback(false); 
     } 
    } 
    }); 
} 
function dialog_confirm_callback(value) { 
    if (value) { 
    alert("Confirmed"); 
    } else { 
    alert("Rejected"); 
    } 
} 
Verwandte Themen