Problema ripetizione funzione su click.
- Questo topic ha 1 risposta, 2 partecipanti ed è stato aggiornato l'ultima volta 8 anni, 8 mesi fa da jqueryitalia.
- AutorePost
- 24 Luglio 2015 alle 13:49 #6883lorenzo8406Partecipante
Buonasera a tutti. Ho realizzato una funzione che chiama, attraverso ajax, una pagina php per aggiungere un prodotto in un carrello. Lo script funziona,o meglio, aggiungere i prodotti li aggiunge ma anche troppo.
Mettendo un alert per vedere quante volte veniva chiamata la funzione praticamente la prima volta viene mostrato un alert se poi riclicco viene mostrato due volte anche se io clicco una volta sola.
Dove sbaglio?
Questo è il codice:
$( "#aggiungicarr" ).one("click", function(evtaggiungicarr) { alert("ciao"); var id_prodotto = $("#id_prod").html(); var quantita=$("#quant").val(); var iva_prod=$("#iva_prod").html(); var prezzo_unita = $("#prezzo_unita").html(); if(quantita>0) { var prezzo_quant_prezzo_totale = $("#prezzo_quant_prezzo_totale").html(); $.ajax({ type: "POST", url: "/admin/funzioni_carrello.php", data: "op=addcart&iva_prodotto="+iva_prod+"&id_prod=" + id_prodotto + "&quant="+quantita+"&prezzo_unita="+prezzo_unita+"&prezzo_quant_prezzo_totale="+prezzo_quant_prezzo_totale, dataType: "html", success: function(msg) { if(msg==1) { $("#testo_modal_utente2").html("Questo prodotto non è più disponibile!"); $('#myModal2').modal(); } else { $("#testo_modal_utente").html(msg); $('#myModal').modal(); $("#iconcarrello").remove(); $('#gestcarrello').load('/_ext/include/menu_top.php #iconcarrello', function () { $.getScript('/js/funzioni_carrello.js'); $.getScript('/js/script_vari.js'); }); $("#da_aggiornare").remove(); $('#refresh_section').load('/_ext/include/sezione_sotto_desc_prod.php?n='+id_prodotto+' #da_aggiornare', function () { $.getScript('/js/funzioni_carrello.js'); $.getScript('/js/script_vari.js'); }); $(".aggiungicarr").unbind('click'); evtaggiungicarr.preventDefault(); } }, error: function() { alert("Si è verificato un errore, si prega di riprovare..."); $(".aggiungicarr").unbind('click'); evtaggiungicarr.preventDefault(); } }); } else { $("#da_aggiornare").remove(); $('#refresh_section').load('/_ext/include/sezione_sotto_desc_prod.php?n='+id_prodotto+' #da_aggiornare', function () { $.getScript('/js/funzioni_carrello.js'); $.getScript('/js/script_vari.js'); }); $("#quant").css("border","2px solid red"); $(".aggiungicarr").unbind('click'); evtaggiungicarr.preventDefault(); } $(".aggiungicarr").unbind('click'); evtaggiungicarr.preventDefault(); });
Alcune cose tipo unbind o preventDefault le ho messe nelle varie prove ma non è cambiato nulla.
Qualcuno mi aiuta?
29 Luglio 2015 alle 19:34 #6886jqueryitaliaAmministratoreDifficile capire il problema senza il relativo codice HTML…
Ad ogni buon conto, la funzione .one() che hai utilizzato esegue la funzione AL MASSIMO una volta per ogni elemento per tipo di evento.Prova ad utilizzare la funzione .on() al posto di .one() 😉
- AutorePost
- Devi essere connesso per rispondere a questo topic.