/ / Como evitar que a caixa de diálogo de confirmação do jquery ui adicione registros twise ao clicar duas vezes? - jquery, jquery-ui

Como evitar que a caixa de diálogo de confirmação do jquery ui adicione registros twise ao clicar duas vezes? - jquery, jquery-ui

Eu estou tentando adicionar um novo registro em uma tabela como código a seguir, usando o diálogo jQuery UI e confirme as caixas. Se eu clicar duas vezes no botão confirmar, o registro será adicionado duas vezes no banco de dados. Como posso evitar isso?

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

}

Respostas:

1 para resposta № 1

Uma solução do lado do cliente é adicionar um booleano:

var sent = false;

...

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

Outra solução mais robusta seria fazerNo lado do servidor, verifico que você ainda não inseriu esses dados. Eu geralmente preferiria isso, pois qualquer tipo de problema ou ataque pode acontecer fora do servidor (no navegador ou na rede).


1 para resposta № 2

Isto é o que fez para mim:

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

0 para resposta № 3

Você pode usar a função jquery ui isOpen ().

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