Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Controllo cb spuntata

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125

    Controllo cb spuntata

    Salve,

    voglio controllare che una checkbox venga selezionata, altrimenti mando a video un popup che avvisa di spuntarla.
    Con il seguente codice, il popup esce fuori, ma quando lo chiudo, sebbene la cb non sia stata spuntata, vado comunque alla pagina successiva (quella settata nell'action del form).

    codice:
    <script type="text/javascript"> 
      function cbCheck(){   cbObj = document.getElementById('cb');   
      if (!cbObj.checked)     
        alert("Devi accettare le condizioni per procedere oltre");   
      } 
    </script>  
    <form id="form1" name="form1" method="post" action="manda.html">   
      <label>   
        <input type="checkbox" name="privacy" id="cb" />   
      </label>   
      <label>   
        <input type="submit" name="button" id="button" value="Controlla" onclick="cbCheck()" />    </label> 
    </form>
    Perchè???

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Perché usi un tasto submit che processa comunque la action del form.
    soluzione con submit:
    codice:
    <script type="text/javascript"> 
      function cbCheck(){   cbObj = document.getElementById('cb');   
      if (!cbObj.checked){     
        alert("Devi accettare le condizioni per procedere oltre");
    return false; }
      } 
    </script>  
    <form id="form1" name="form1" method="post" action="manda.html" onsubmit="return cbCheck()">   
      <label>   
        <input type="checkbox" name="privacy" id="cb" />   
      </label>   
      <label>   
        <input type="submit" name="button" id="button" value="Controlla" />    </label> 
    </form>
    con button:
    codice:
    <script type="text/javascript"> 
      function cbCheck(){   cbObj = document.getElementById('cb');   
      if (!cbObj.checked){     
        alert("Devi accettare le condizioni per procedere oltre");
    }else{
    document.form1.submit()
    }   
      } 
    </script>  
    <form id="form1" name="form1" method="post" action="manda.html">   
      <label>   
        <input type="checkbox" name="privacy" id="cb" />   
      </label>   
      <label>   
        <input type="button" name="button" id="button" value="Controlla" onclick="cbCheck()" />    </label> 
    </form>


    P.S. Sbaglio o lo studio non è il tuo forte?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da cavicchiandrea
    con button:
    Occhio che mettendo un button invece di un submit e facendo il controllo solo su di esso, il navigante può bypassare il tutto semplicemente premendo invio su un campo del form. Per evitare questo inconveniente il controllo andrebbe fatto sempre sull'evento onsubmit e mai su un button. Magari aggiungendo un return true in caso di controllo positivo (e opzionalmente un focus sull'elemento in caso di esito negativo)...:

    codice:
    <script type="text/javascript"> 
      function cbCheck() {
        var oCb = document.getElementById("cb");
        if (!oCb.checked) {
          alert("Devi accettare le condizioni per procedere oltre.");
          oCb.focus();
          return false;
        }
        return true;
      } 
    </script>

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Grazie ad entrambe, ho risolto.

    P.s.: hai ragione Andrea, posto molto e forse m'impegno poco. Devo però dirti che non è mancanza di volontà, bensì di tempo.

    Saluti a tutti,
    Marco

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da carlomarx
    Occhio che mettendo un button invece di un submit e facendo il controllo solo su di esso, il navigante può bypassare il tutto semplicemente premendo invio su un campo del form...
    Non mi risulta sia attivo l'invio quando nel form mancano tasto submit o image (quando ho avuto necessità di "bloccare" il tasto invio toglievo il submit e mettevo il button)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da cavicchiandrea
    Non mi risulta sia attivo l'invio quando nel form mancano tasto submit o image (quando ho avuto necessità di "bloccare" il tasto invio toglievo il submit e mettevo il button)
    No, no. Occhio che così facendo crei dei bugs di sicurezza. Premendo invio su questa pagina il form invia tranquillamente i dati a google:

    codice:
    <!doctype html>
    <html>
    <head></head>
    <body>
    <form action="http://www.google.com/" method="get">
    
    
    Cerca con Google: <input type="text" name="q" /></p>
    </form>
    </body>
    </html>
    Agire sempre sull'onsubmit...

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.