Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    67

    controllo selezione almeno una checkbox

    selezionare almeno una checkbox

    Ciao sto cercando di fare uno script in javascript che controlli se almeno una checkbox è stata selezionata, perché altrimenti quando invio i dati dal form la query non funziona.
    Ho questa funzione :

    function controlla(frm) {
    var rv = false;
    for (var i=0;i<frm.elements.length;i++){
    if (frm.elements[i].name=="chk" && frm.elements[i].ckeched) rv=true;
    }
    if (rv) {
    frm.submit();
    } else {
    alert("Almeno uno dei campi devono essere spuntati!");
    }
    }

    Utilizzandola mi compare il messaggio di selezionare almeno un checkbox, però poi mi manda all'altra pagina comunque e il messaggio compare anche se seleziono una checkbox.

    Questo è il mio form

    <form class="form_auto1" name="form_auto1" action="richiesta_auto.php" method="post">
    <table class="table_ricerca">
    <caption>Seleziona il tipo di richiesta</caption>

    <tr>

    <td align="center" colspan=2><font color=" #4040c0">Tipo veicolo:</font>

    <select name="tipo" id="tipo" style="width:auto;">
    <option>Auto </option>
    </select>

    </td>

    <td align="center" colspan=2><font color=" #4040c0">Tipo richiesta:</font>


    <input type="checkbox" name="rc" id="rc" value="rc">RC
    <input type="hidden" value=1 name="proviene" id="proviene">
    <input type="checkbox" name="ard" id="ard" value="ard" onclick="document.getElementById('tipoard').style. display=(this.checked)?'block':'none';">ARD
    </td>

    </tr>

    <tr>
    <td></td>
    <td align="center" colspan=4>
    <label for="tipoard" id="tipoard" style="display:none">
    <input type="radio" name="tipo_ard" value="generale" >GENERALE
    <input type="radio" name="tipo_ard" value="rimas" onclick="if (!(document.form_auto1.rc.checked)){document.form_ auto1.action='scheda_ard_rimas.php'};">RIMAS</label>
    </td>
    </tr>


    <tr>
    <td></td>
    <td colspan=2>
    <input name="avanti" type="image" src="images/avanti1.gif" alt="Avanti" title="Avanti" onCLICK="controlla(this.form)" > </td>
    <td></td>
    </tr>


    </table>

    </form>

    Dove sbaglio ? Potreste darmi una mano per favore ? I nomi delle checkbox devono necessariamente essere diversi.
    Grazie

  2. #2
    ehm, il modo migliore per gestire una cosa del genere non è intercettare l'evento onclick del bottone, ma l'evento onsubmit della form e lo scopo di intercettare l'evento consiste nel bloccarlo quando non va non nel lanciare il submit, quello va in automatico.

    devi fare:

    <form class="form_auto1" name="form_auto1" action="richiesta_auto.php" method="post" onsubmit="return controlla(this)">

    inoltre, devi BLOCCARE l'evento facendo ritornare false alla funzione:

    codice:
    function controlla(frm) {
       var rv = false;
       for (var i=0;i<frm.elements.length;i++){
          if (frm.elements[i].type && frm.elements[i].type.toLowerCase() =="checkbox" && frm.elements[i].checked) rv=true;
       }
       if (!rv){
          alert("Almeno uno dei campi devono essere spuntati!");     
       }
       return rv;
    }
    N.B: il tuo codice comunque, era sbaligato, è il type che è checkbox ed è checked non ckeched
    I DON'T Double Click!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    67
    Originariamente inviato da artorius
    ehm, il modo migliore per gestire una cosa del genere non è intercettare l'evento onclick del bottone, ma l'evento onsubmit della form e lo scopo di intercettare l'evento consiste nel bloccarlo quando non va non nel lanciare il submit, quello va in automatico.

    devi fare:

    <form class="form_auto1" name="form_auto1" action="richiesta_auto.php" method="post" onsubmit="return controlla(this)">

    inoltre, devi BLOCCARE l'evento facendo ritornare false alla funzione:

    codice:
    function controlla(frm) {
       var rv = false;
       for (var i=0;i<frm.elements.length;i++){
          if (frm.elements[i].type && frm.elements[i].type.toLowerCase() =="checkbox" && frm.elements[i].checked) rv=true;
       }
       if (!rv){
          alert("Almeno uno dei campi devono essere spuntati!");     
       }
       return rv;
    }
    N.B: il tuo codice comunque, era sbaligato, è il type che è checkbox ed è checked non ckeched
    Grazie mille, chiaro ed esplicativo. ora i controlli sulle due check rc e ard funzionano ma se lo volessi fare anche per le due radio tipo_ard ? Si può fare tutto nella stessa funzione ?

  4. #4
    codice:
    function controlla(frm) {
       var rv = false;
       for (var i=0;i<frm.elements.length;i++){
          if (frm.elements[i].type && frm.elements[i].type.toLowerCase() =="checkbox" && frm.elements[i].checked) rv=true;
       }
       if (!rv){
          alert("Almeno uno dei campi devono essere spuntati!");     
       }
    
       for (var i=0;i<frm.elements.length;i++){
          if (frm.elements[i].type && frm.elements[i].type.toLowerCase() =="radio" && frm.elements[i].checked) rv=true;
       }
    
       if (!rv){
          alert("E' necessario selezionare almeno un campo radio!");     
       }
       return rv;
    }
    I DON'T Double Click!

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    67
    Ok, però basta che poi seleziono una checkbox e poi salta il controllo sulla radio, quindi posso spuntare la checkbox ard, che poi farà comparire i due radio, ma a quel punto ho la necessità che venga spuntato anche uno di quelli.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    67
    Nessuna alternativa ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    67
    Originariamente inviato da creamer
    Nessuna alternativa ?
    Proprio niente ?
    Comunque ringrazio ancora chi mi ha aiutato in precedenza

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.