/ / Comment empêcher la boîte de dialogue de confirmation jquery ui d’ajouter deux enregistrements lors d’un double clic? - jquery, jquery-ui

Comment empêcher la boîte de dialogue de confirmation jquery ui d’ajouter deux enregistrements lors d’un double clic? - jquery, jquery-ui

J'essaie d'ajouter un nouvel enregistrement dans un tableau avecle code suivant, en utilisant la boîte de dialogue jQuery ui et les cases de confirmation. Si je double-clique sur le bouton de confirmation, l'enregistrement sera ajouté deux fois dans la base de données. Comment puis-je empêcher cela?

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");

}

Réponses:

1 pour la réponse № 1

Une solution client consiste à ajouter un booléen:

var sent = false;

...

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

Une autre solution plus robuste serait de fairecôté serveur la vérification que vous n’avez pas encore inséré ces données. Je préférerais généralement cela car tout type de problème ou d’attaque peut survenir en dehors du serveur (sur le navigateur ou sur le réseau).


1 pour la réponse № 2

C'est ce qui me l'a fait:

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

0 pour la réponse № 3

Vous pouvez utiliser la fonction jquery ui isOpen ().

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