Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    111

    campo select che controlla un checkbox

    Salve,ho fatto una ricerca sul form ma non ho trovato la risposta alla mia domanda.
    Come è possibile fare in modo, in base al valore selezionato sulla select, impostare il checkbox come checked. Meglio ho una select dove vengono selezionati dei numeri (1,2,3..5)in base al numero selezionato dovrei porre ciascun checkbox come cheked o meno. Se viene selezionato 1 verra posto come checked il primo checkbox, se viene selezionato 3 verranno posti come checked i primi tre checkbox.

    esempio di codice che non funziona

    <script language="JavaScript" type="text/JavaScript">
    function controlform(j){

    if(document.form1.n_stelle.value==1){

    document.form1.r1.checked==true;
    }
    }
    </script>

    <form name="form1" method="post" action="" >
    <table width="167" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td width="167"><select name="n_stelle" id="n_stelle" onChange="return controlform(0)" >
    <option>seleziona</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    </select>
    </ td>
    </tr>
    <tr>
    <td></td>
    </tr>
    <tr>
    <td>"><input name="r1" type="checkbox" id="r1"></td>

    Vi ringrazio già da ora per l'attenzione concessa al problema.

  2. #2
    prova così:

    codice:
    function checkIt(indice) {
     document.nomeform.elements["nomecheckbox"+indice].checked=true;
    }
    da attivare così:

    codice:
    <select name="n_stelle" id="n_stelle" onChange="checkIt(this.options[this.selectedIndex].value);">
    ciao

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    function controlform(sl) {
      f = sl.form;
      vl = sl.options[sl.selectedIndex].value;
      for (var i=1;i<sl.options.length;i++) { 
          f.elements["r"+i].checked = (i<=vl);
      }
    }
    da richiamare con:

    onChange="controlform(this)"

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    111
    mi dispiace ma in entrambi i codici ricevo il segnale di errore

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non in tutti ibrowser la proprieta` checked si puo` scrivere.
    Si puo` usare il metodo click(); , invece.

    Supponendo un codice HTML di questo tipo:
    codice:
    <form name="form1" method="post" action="" >
    <select name="n_stelle" id="n_stelle" onChange="copiasel(this)" >
    <option>seleziona</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    </select>
    
    <input name="r1" type="checkbox" id="r1">
    <input name="r2" type="checkbox" id="r2">
    <input name="r3" type="checkbox" id="r3">
    <input name="r4" type="checkbox" id="r4">
    ...
    </form>
    Lo script potrebbe diventare:
    codice:
    function copiasel(ss) {
      var valsel = parseInt(ss.options[ss.selectedIndex].value, 10);
      var i=0;
      var cb;
      for(i=1; i<=valsel; i++) {
        cb = ss.form.elements['r'+i];
        if(!cb.checked) cb.click();
      } for(i; i<=4; i++) { // il 4 si riferisce al numero max di checkbox
        cb = ss.form.elements['r'+i];
        if(cb.checked) cb.click();
      }
    }
    Spero sia quello che volevi.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    111
    ti ringrazio Mich, funziona correttamente. Mi hai tolto da un bel inghippo grazie ancora.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Altra versione (forse piu` sicura: non fa uso di codice ardito)
    codice:
    function copiasel(ss) {
      var valsel = parseInt(ss.options[ss.selectedIndex].value, 10);
      for(var i=1; i<=4; i++) { // il 4 si riferisce al numero max di checkbox
        var cb = ss.form.elements['r'+i];
        if( (i<=valsel && !cb.checked) || i>valsel && cb.checked) cb.click();
      }
    }
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    111
    Grazie molto gentile Mich

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.