Ich habe Erstellen und Abbrechen Schaltflächen als Teil eines jquery-ui modalen Dialogfelds. Ich möchte etwas nach dem Schließen des Dialogs nur tun, wenn der Benutzer auf "Erstellen" klickt. Wenn sie auf "Abbrechen" oder "X" klicken oder Esc drücken, möchte ich etwas anderes tun. Gibt es eine Möglichkeit, Parameter an den Close-Event-Handler zu übergeben oder einen anderen Weg zu erkennen, was den Close verursacht hat?wie zu erkennen, was das Schließen-Ereignis in jquery UI-Dialog ausgelöst
Antwort
versuchen, dies wie hier discribed: http://jqueryui.com/demos/dialog/#modal-confirmation
- bearbeiten
aus dem Link von oben kopiert:
var trigger = "";
$("#dialog").dialog({
bgiframe: true,
resizable: false,
height:140,
modal: true,
overlay: {
backgroundColor: '#000',
opacity: 0.5
},
buttons: {
'Create': function() {
// do your stuff
trigger = "create";
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
}
close: function() {
if (trigger == "create")
// do something here
}
});
definieren Ereignisse für Ihre Schaltflächen wie folgt aus:
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 300,
modal: true,
buttons: {
'Create': function() {
alert('the user clicked create');
$(this).dialog('close');
},
Cancel: function() {
alert('the user clicked cancel');
$(this).dialog('close');
}
},
close: function() {
// do somthing
}
});
Schauen Sie sich auch die Parameter pa an ssed in der Nähe Fall ist die Methode Unterschrift:
function(event, ui)
Sie hier weitere Informationen link text
Richtig, ich frage mich, wie ich innerhalb des Close-Handler erkennen kann, was es ausgelöst hat. – Riz
$('#jqPopup').dialog({modal:true,title:tit,autoOpen:false,beforeclose:function(){
//Will get triggered when user press the 'X' button
$("#wholeContent").css('display','block');}
});
$("#wholeContent").css('display','none');
$('#jqPopup').dialog('open');
In der Nähe Ereignis, was Sie sagen, finden, indem man die Ereignis Parameter passiert (Parameter 1).
Wenn der Dialog durch Klicken auf die geschlossen wurde [x] dann erhalten Sie Maus-Ereignis Felder aus.
Und falls der Dialog durch Drücken Flucht geschlossen wurde dann erhalten Sie Tastatur-Ereignis Felder aus.
Wenn der Dialog programmgesteuert geschlossen wurde, gilt keines der oben genannten.
Also, ein guter Ort, um zu beginnen ist zu sehen event.which. Schließen mit der [x] bedeutet, dass Sie den Wert der Maustaste (1 bis 3) erhalten, und schließen mit Escape bedeutet, dass Sie den Schlüsselcode (27) erhalten. Closing programmatisch bedeutet event.which wird nicht definiert.
auf Ihre Frage jetzt zurück ...
Sie wollen eine Sache tun, wenn sie erstellen drücken - das ist einfach, es ist nur für diese Schaltfläche in der Funktion setzen.
Sie möchten etwas anderes auf [x], Escape oder klicken Sie auf Abbrechen. Erstellen Sie eine Funktion mit dem Namen cancelled() (oder was auch immer) und rufen Sie dann diese Funktion auf die Schaltfläche Abbrechen und rufen Sie es in dem Schließen Ereignis , wenn event.which einen Wert hat.
So etwas ...
buttons: {
'Create': function() {
// do your stuff here
$(this).dialog('close');
},
Cancel: function() {
cancelled();
$(this).dialog('close');
}
},
close: function(event) {
if (event.which) {
cancelled();
}
}
denke ich, dass deckt, was Sie brauchen, und es vermeidet mess um eine Variable zu schaffen, um zu verfolgen, wo Sie sind.
Wirklich für mich gearbeitet. Vielen Dank! Ich hoffe, dass sie irgendwann etwas in den Dialog einbauen, der die Quelle erkennen würde. – Aamir
- 1. Wie man ein html Element zu jquery uidialog hinzufügt
- 2. Wie zu erkennen ist, ist das Argument jQuery-Objekt
- 3. Wie erkennen Sie mit jQuery Linksklick auf das Dokument?
- 4. jquery-Dateien Konflikte, wie zu erkennen?
- 5. jquery-wie Kind ID zu erkennen?
- 6. Wie zu erkennen, wenn Return in UITextField
- 7. Wie zu erkennen, was eine deprecation Warnung verursacht in Rake
- 8. jQuery: Wie kann ich dieses scrollende Ereignis, das zu oft ausgelöst wird, verbessern?
- 9. Wie jQuery in der Seitenansicht ausgelöst wird?
- 10. erkennen upload window schließen jquery
- 11. Erkennen, welche AnimationEnd ausgelöst hat über animationName
- 12. jquery erkennen Änderung in Klassenzuordnung
- 13. JQuery erkennen Programmatic Change Ereignis
- 14. Was Jquery Plugin ist das?
- 15. Wie erkennen Sie, ob ein Klick durch Berührung ausgelöst wurde?
- 16. Was ist das dreifache Dollarzeichen in jquery?
- 17. Erkennen, wann jQuerys Methode hide() für ein Element ausgelöst wird
- 18. JavaScript: Gibt es eine Möglichkeit zu erkennen, ob ein Ereignis vom Benutzer ausgelöst wurde (anstelle von Code ausgelöst)?
- 19. jQuery: Welches Element wurde ausgelöst?
- 20. Was bedeutet das Symbol $ in jQuery?
- 21. jQuery, keyup Ereignis nicht ausgelöst
- 22. jQuery MouseUp nicht ausgelöst wird, wenn mousemove- auf das Bild
- 23. Was ist das allererste Ereignis, das von einem HTML-Dokument ausgelöst wird?
- 24. JQuery Fenster Resize nicht ausgelöst
- 25. jQuery + Jeditable - erkennen, wenn Auswahl geändert wird
- 26. jquery .click Funktion nicht ausgelöst
- 27. Wie kann $ (this) nicht das Element sein, das das Ereignis in einem jQuery-Click-Handler ausgelöst hat?
- 28. jQuery: Erkennen einer Browsergröße
- 29. Eclipse das gleiche Gerät mehrmals zu erkennen
- 30. JQuery onclick Ereignis mehrfach ausgelöst
Richtig, ich frage mich, wie ich innerhalb der nahen Handler erkennen kann, was es ausgelöst hat. – Riz
mh, auf dem Kopf - deklariere einen var trigger = ""; als global und setze es in der 'Create' Funktion. Dann kannst du den Wert im Close-Handler bekommen ... – stefita
doh! Danke, Mann! – Riz