Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Come ottenere in output tutti i valori dei checkbox selezionati aventi stesso name?

    Salve ragazzi,

    Il problema che ho adesso è il seguente: in un form, ho una serie di opzioni racchiuse in input di tipo checkbox, che l'utente può selezionare fino ad un massimo di 4.

    Però il form che ricevo (nella mia mailbox) contiene solo un valore che l'utente ha selezionato (e non tutte le altre opzioni eventualmente selezionate...)

    C'è da considerare che, per impostare un controllo sul numero massimo di checkbox selezionabili (nel mio caso 4), ho adottato un codice che mi obbliga ad usare negli input dei checkbox lo stesso name (ho provato ad usare name diversi per ogni checkbox, ma poi non mi funziona il controllo sul limite massimo dei checbox selezionabili)...


    Riporto il codice qui sotto:

    nella HEAD:

    <script type="text/javascript">
    function checkboxlimit(checkgroup, limit){
    var checkgroup=checkgroup
    var limit=limit
    for (var i=0; i<checkgroup.length; i++){
    checkgroup[i].onclick=function(){
    var checkedcount=0
    for (var i=0; i<checkgroup.length; i++)
    checkedcount+=(checkgroup[i].checked)? 1 : 0
    if (checkedcount>limit){
    alert("You can only select a maximum of "+limit+" checkboxes")
    this.checked=false
    }
    }
    }
    }

    </script>

    </HEAD>

    .........................

    Descrivi il tuo carattere (puoi selezionare al massimo 4 opzioni):</font>
    </span>
    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="dolce" class="checkbox" />dolce

    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="romantico" class="checkbox" />romantico

    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="trasgressivo" class="checkbox" />trasgressivo

    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="ribelle" class="checkbox" />ribelle


    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="autoritario" class="checkbox" />autoritario

    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="passionale" class="checkbox" />passionale

    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="timido" class="checkbox" />timido

    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="ottimista" class="checkbox" />ottimista

    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="pessimista" class="checkbox" />pessimista

    ................................


    In fondo al body:


    <script type="text/javascript">
    //Syntax: checkboxlimit(checkbox_reference, limit)
    checkboxlimit(document.forms.formular.tuocarattere , 4)

    </script>
    </body>
    </html>


    Come posso fare per avere i valori di tutti i checkbox selezionati, anche se devono avere tutti lo stesso name?

    Grazie e.. buon fine settimana
    E. Barros

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se controlli diversi con lo stesso name sono presenti nel form, sul server arriveranno tutti i valori ma suddivisi da virgole.

    Insomma, non e' un problema di javascript, sempreche' tu non voglia riscrivere il controllo sul numero massimo di checkbox.

    Ok per usare lo stesso name, anche se non e' ortodosso, ma l'ID
    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

  3. #3
    Ok, quindi scritto così com'è il codice dovrebbe restituirmi in output i valori di tutti i checkbox selezionati, separati da virgole? (Però a me restituisce solo un valore anche se ho 4 checkbox selezionati ....

    Forse il problema è sugli ID? Ho sbagliato a scriverli così (o è meglio toglierli del tutto)?

    Grazie.
    E. Barros

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Per il name sarebbe meglio averli diversi (per facilitare il recupero in out) per gli id devono essere diversi, per capire quante box sono selezionate fai il ciclo for sul input
    codice:
    <script type="text/javascript">
    function checkboxlimit(){
    var checkgroup=document.getElementsByTagName("input");
    var limit=4//qui scrivi il limite massimo delle checkbox selezionabili
    for (var i=0; i<checkgroup.length; i++){
    if(checkgroup[i].type == 'checkbox' && checkgroup[i].checked && i > limit){
    alert("You can only select a maximum of "+limit+" checkboxes")
    checkgroup[i].checked=false
    }
    }
    }
    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="romantico" class="checkbox" onclick="checkboxlimit()" />
    <input type="checkbox" name="tuocarattere_1" id="tuocarattere_1" value="passionale" class="checkbox" onclick="checkboxlimit()" />
    etc...
    non l'ho testato fallo tu.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Ciao Andrea,
    dopo alcune prove, basandomi sul codice che mi hai suggerito, ho creato quest'altro codice molto più elementare (ad ogni click sulle checkbox, si esegue un conteggio delle caselle selezionate. Se il numero è superiore al limite, cioè 4, appare il messaggio di alert).


    Riporto qui sotto il semplice script:


    <script type="text/javascript">
    function checkboxlimit(){
    cont = 0;
    var box1 = document.getElementById('tuocarattere').checked;
    var box2 = document.getElementById('tuocarattere_1').checked;
    var box3 = document.getElementById('tuocarattere_2').checked;
    var box4 = document.getElementById('tuocarattere_3').checked;
    var box5 = document.getElementById('tuocarattere_4').checked;
    var box6 = document.getElementById('tuocarattere_5').checked;
    var box7 = document.getElementById('tuocarattere_6').checked;
    var box8 = document.getElementById('tuocarattere_7').checked;
    cont = box1 + box2 + box3 + box4 + box5 + box6 + box7 + box8;
    if (cont > 4) {alert("You can only select a maximum of 4 checkboxes!");}
    }
    </script>


    Questo nel BODY:


    <input type="checkbox" name="tuocarattere" id="tuocarattere" value="romantico" class="checkbox" onclick="checkboxlimit()" />romantic</input>

    <input type="checkbox" name="tuocarattere_1" id="tuocarattere_1" value="ribelle" class="checkbox" onclick="checkboxlimit()" />rebel</input>

    <input type="checkbox" name="tuocarattere_2" id="tuocarattere_2" value="passionale" class="checkbox" onclick="checkboxlimit()" />passionate</input>

    <input type="checkbox" name="tuocarattere_3" id="tuocarattere_3" value="timido" class="checkbox" onclick="checkboxlimit()" />timid</input>

    ecc..


    Così funziona, (anche se si potrebbe migliorare usando un ciclo for-next), però ora ci vorrei aggiungere il codice che, appena selezionata la quinta checkbox, e subito dopo apparso il messaggio, automaticamente si deseleziona l'ultima checkbox selezionata, quella che eccede il limite...Come si può fare?

    E. Barros

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da barros971

    Così funziona, (anche se si potrebbe migliorare usando un ciclo for-next), però ora ci vorrei aggiungere il codice che, appena selezionata la quinta checkbox, e subito dopo apparso il messaggio, automaticamente si deseleziona l'ultima checkbox selezionata, quella che eccede il limite...Come si può fare?

    Usa lo script di Andrea
    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

  7. #7
    Ok, addesso funziona, grazie
    Un'ultima cosa su questo mio form (almeno spero):

    il form è costituito da una notevole quantità di campi input di ogni tipo (radio, checkbox, textarea, ecc), suddivisi per vari argomenti e organizzati per lo più in tabelle, e alla fine sono presenti i due tradizionali bottoni, di reset e di invio.

    Riguardo al bottone di reset, che se cliccato cancella tutti i campi dell'intero form, io vorrei aggiungere, per alcune tabelle in particolare, dei bottoni di reset che cancellano solo il contenuto dei campi input di una determinata tabella, lasciando intatti tutti gli altri.
    Faccio un esempio: ho dei campi input contenuti in tabelle come questa:

    [B]
    <table bgcolor="red" width=100% align=center><tr><td align=center><font face=arial size=4>[b]Esperienza lavorativa N.1</FONT>


    <table border=0>
    <tr>
    <td>
    [b]<font face=arial size=3>Quanto tempo è durata questa esperienza?</font> (Anni+Mesi):</td>
    <td style="text-align: right;">
    <select class="text-input" onchange="showValue(this.value)" id="anniesp1" name="anniesp1">
    <option value="">Seleziona quanti anni</option>
    <option value="0 y">0 y</option>
    <option value="1 y">1 y</option>
    <option value="2 y">2 y</option>
    <option value="3 y">3 y</option>
    <option value="4 y">4 y</option>
    <option value="5 y">5 y</option><option value="+5 y">+5 y</option>

    </select></td><td><font size=5>[b] + </td><td><select class="text-input" onchange="showValue(this.value)" id="mesiesp1" name="mesiesp1">
    <option value="">Seleziona quanti mesi</option>
    <option value="0 m">0 m</option>
    <option value="1 m">1 m</option>
    <option value="2 m">2 m</option>
    <option value="3 m">3 m</option>
    <option value="4 m">4 m</option>
    <option value="5 m">5 m</option>
    <option value="6 m">6 m</option>
    <option value="7 m">7 m</option>
    <option value="8 m">8 m</option>
    <option value="9 m">9 m</option>
    <option value="10 m">10 m</option>
    <option value="11 m">11 m</option>

    </select></td></tr></table>

    <TABLE WIDTH="100%" BORDER=1>
    <TR><TD align=center><FONT face=arial SIZE=3>[B]

    Che genere di lavoro?
    <input type="text" name="lavoro_esp_1" id="lavoroesp1" class="text-input">

    Per quale motivo questa esperienza si è interrotta?</FONT>

    <textarea type="text" rows="1" cols="45" name="motivo_fine_esp_1" id="motivofineesp1"></textarea>

    </TD>
    <TD align=center><font size=3 face=arial>Chi ha deciso di interrompere questa esperienza?</font>

    <TABLE WIDTH="100%" BORDER=0>
    <TR><TD><input type="radio" class="radio-input" value="Io" name="chi_ha_interrotto_esp1" id="chihainterrottoesp1"></td><td><font face=arial size=2> Io


    </TD></TR><TR><TD><input type="radio" class="radio-input" value="Io (dietro pressioni dei miei superiori/colleghi di lavoro)" name="chi_ha_interrotto_esp1" id="chihainterrottoesp1"></td><td><font face=arial size=2> Io (dietro pressioni dei miei superiori/colleghi di lavoro)


    </TD></TR><TR><TD><input type="radio" class="radio-input" value="I miei superiori" name="chi_ha_interrotto_esp1" id="chihainterrottoesp1"></td><td><font face=arial size=2> I miei superiori

    </TD></TR></TABLE>
    </TD>
    </TR>
    </TABLE>[img]bottone1-continue.gif[/img]


    </TD>
    </TR>
    </TABLE>


    Ora io vorrei aggiungere a questa table un bottone di reset che cancelli solo i dati degli input contenuti in questa tabella, lasciando inalterati tutti gli gli altri dati del form ....come si può fare?


    E. Barros

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    creati un metodo che va a resettare solo i campi che ti interessano...

  9. #9
    Si, ma non ho idea di come si fa Un esempio?
    E. Barros

  10. #10
    Per risolvere il problema, mi sarebbe sufficiente un codice che mi resetti con un solo click i 5 campi input della tabella (nel mio caso ad esempio, con un click di un bottone di reset posto ai margini di ogni tabella si cancellano i campi: id="anniesp1", id="mesiesp1", id="lavoroesp1", id="motivofineesp1", id="chihainterrottoesp1").

    Ho trovato il codice di un bottone reset che resetta un solo campo di un form, ma nel mio caso devo resettare 5 campi...

    Qual'è il codice corretto?

    Grazie.
    P.S.: Nel caso questo post sia OT, prego i moderatori di spostarlo in una sezione adeguata, grazie.
    E. Barros

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.