Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    evento onclick su bottone non funziona se clicco su annulla nell'alert

    Buongiorno
    ho un bottone che quando lo premo chiedo prima conferma se si è sicuri

    codice:
    <button type="submit" id="invia-conferma-hotel-$id_prenotazione" name="invia-conferma-hotel-$id_prenotazione" class="btn btn-outline-success mb-2 me-4" onclick="return confirm('Sei Sicuro?')">INVIA CONFERMA ALL'HOTEL/PARTNER</button>
    quando si apre l'alert escono i 2 pulsanti "annulla" e "ok"

    Se clicco su "ok" il bottone fa correttamente quello che deve (aprire una pagina tramite ajax per inviare una email di conferma)

    Ho notato pero' che anche se clicco su "annulla" questa pagina viene aperta

    Come mai succede?

    Per chiarezza scrivo anche il codice javascript che mi apre la pagina via ajax, non so se può dipendere da questo
    codice:
    <script>
    $(document).ready(function(){
      $("#invia-conferma-cliente-<?=$id_prenotazione?>").click(function(){
        $.get("mail-conferma-cliente.php?id_prenotazione=<?=$id_prenotazione?>", function(data, status){
                $('#email-invia-conferma-cliente').html(data);
        });
      });
    });
    </script>
    Ultima modifica di allin81; 23-11-2022 a 14:26

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quote Originariamente inviata da allin81
    Come mai succede?
    Ciao, succede perché si tratta di due listener indipendenti l'uno dall'altro. Il return false (restituito col confirm), interrompe l'esecuzione dello script presente nella stessa funzione (cioè lo script definito per l'onclick) e previene il comportamento di default (cioè impedisce che avvenga il submit) ma NON interrompe la propagazione dell'evento click. Quindi i listener a seguire (definiti per quello stesso evento) continuano a funzionare normalmente perché l'evento click non è stato interrotto per loro.

    Per interrompere l'esecuzione dei listener susseguenti, puoi usare il metodo stopImmediatePropagation() (dell'oggetto event).
    Ovviamente dovrai sempre interrompere l'azione del submit usando il return false oppure il metodo preventDefault().
    Una roba del genere:
    codice HTML:
    <button type="submit" ... onclick="if(!confirm('Sei Sicuro?')){ event.preventDefault(); event.stopImmediatePropagation();}">INVIA...</button>
    o col return, in questo modo:
    codice HTML:
    <button type="submit" ... onclick="if(!confirm('Sei Sicuro?')){ event.stopImmediatePropagation(); return false;}">INVIA...</button>
    Fai sapere
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ciao
    ho usato direttamente il secondo esempio ed ha funzionato alla grande.

    Grazie sempre per i preziosi consigli/aiuti

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quote Originariamente inviata da allin81
    ho usato direttamente il secondo esempio ed ha funzionato alla grande.
    Ottimo!
    buon proseguimento
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.