jQuery / Javascript confermano due volte
-
05-07-2019 - |
Domanda
Per qualche strana ragione sto ricevendo due volte la mia casella di conferma. ecco il mio codice:
$(".DeleteComment").live("click", function(){
var CommentID = $(this).attr("rel");
var confirm
if (!confirm('Are you sure you want to permanently delete this comment?')){
return false;
}else{
$(this).html("loading").css("color", "#999");
//AJAX HERE
return false;
}
});
Soluzione
Carichi dinamicamente contenuti (tramite ajax)? È possibile che l'evento click sia associato allo stesso elemento due volte con conseguente doppia conferma.
Altri suggerimenti
prova questo:
prova questo:
<*>blockDelete = false;
$(".DeleteComment").live("click", function(event){
event.preventDefault();
//event.stopPropagation(); // it is not necessary
if (! prova questo:
<*>blockDelete)
{
prova questo:
<*>blockDelete =true;
var rconfirm = confirm('Are you sure you want to permanently delete this comment?');
if (rconfirm)
{
$(this).html("loading").css("color", "#999");
var CommentID = $(this).attr("rel");
//AJAX HERE
//return the value "false" the variable " prova questo:
<*>blockDelete" once again ajax response
}
}
});
Succede quando associamo un evento agli elementi che sono caricati dinamicamente tramite AJAX
Ad esempio, stiamo caricando del contenuto html dinamico (ad es. contenuto dinamico in modale) facendo clic sul pulsante del modulo modifica
,
E in quel contenuto se abbiamo evento clic associato su un pulsante ad es. elimina
, quindi ogni volta che facciamo clic sul pulsante del modulo modifica
, lega l'evento click
a elimina
pulsante ogni volta,
E se hai impostato la casella di conferma sull'evento clic del pulsante elimina
, ti chiederà quante volte è stato associato a quell'evento clic significa qui se abbiamo fatto clic sul pulsante modifica
5 volte, quindi verrà richiesta la conferma 5 volte.
Quindi, per risolvere il problema puoi
$(document).off('click', '.DeleteComment').on('click', '.DeleteComment', function () {
if (confirm('Are you sure you want to permanently delete this comment?')){
//Delete process
return true;
}
return false;
}
O Un altro modo per risolvere questo problema è aggiungere il tuo script nella pagina principale, significa che la pagina statica non è caricata in modo dinamico .
Hai provato a rimuovere quel var confirm
non utilizzato?