/ / Wie kann ich verhindern, dass das Jquery-Ui-Dialogfeld beim Doppelklicken Doppeleinträge hinzufügt? - jquery, jquery-ui

Wie verhindert man, dass jquery ui confirm-Dialogfenster Twise-Datensätze beim Doppelklicken hinzufügt? - jquery, jquery-ui

Ich versuche, einen neuen Datensatz in eine Tabelle mit einzufügenDer folgende Code wird mithilfe des jQuery-Dialogfelds "Ui" und der Bestätigungsfelder angezeigt. Wenn ich auf die Bestätigungsschaltfläche doppelklicke, wird der Datensatz zweimal in die Datenbank eingefügt. Wie kann ich das verhindern?

function AddNewClient(){
jQuery("#confirmdialog").html("are you sure");
jQuery("#confirmdialog").dialog({
modal: true,
buttons : {
"Confirm" : function() {
jQuery.ajax({
type: "POST",
url: "index.php?option=com_travelagencycrm&view=clients&task=AddNewClient&format=raw",
cache: false,
data : {id:jQuery("#client_id").val(),
fullname:jQuery("#fullname").val(),
vat_id:jQuery("#vat_id").val(),
address:jQuery("#address").val(),
state_id:jQuery("#state_name").val(),
country_id:jQuery("#country_name").val(),
email:jQuery("#email").val(),
phone_1:jQuery("#phone_1").val(),
phone_2:jQuery("#phone_2").val(),
postalcode:jQuery("#postalcode").val()
}
}).done(function(msg) {

jQuery("#tablepanelclients").flexReload();
//alert(msg);
jQuery("#confirmdialog").dialog("close");
jQuery("#editclient").dialog("close");

}).error(function(msg){
alert(msg);
jQuery("#confirmdialog").dialog("close");
jQuery("#editclient").dialog("close");
});


},
"Cancel" : function() {
jQuery(this).dialog("close");
}
}
});

jQuery("#confirmdialog").dialog("open");

}

Antworten:

1 für die Antwort № 1

Eine clientseitige Lösung ist das Hinzufügen eines Boolean:

var sent = false;

...

  buttons : {
"Confirm" : function() {
if (sent) return;
sent = true;
jQuery.ajax({

Eine andere robuste Lösung wäre zu tunserverseitig die Überprüfung, dass Sie diese Daten noch nicht eingegeben haben. Ich würde dies im Allgemeinen vorziehen, da Probleme oder Angriffe außerhalb des Servers (im Browser oder im Netzwerk) auftreten können.


1 für die Antwort № 2

Das hat es für mich getan:

$(":button:contains("OK")").attr("disabled", true);

0 für die Antwort № 3

Sie können die Jquery-UI-Funktion isOpen () verwenden.

 if( $(this).dialog("isOpen") ){
YOUR CODE
} else {
return;
}
$(this).dialog("close");
}