Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407

    Valore checkbox selezionato sempre `undefined`

    Valore checkbox selezionato sempre `undefined`

    Ciao a tutti.

    non riesco a far valorizzare correttamente il valore del checkbox selezionato in questa pagina html, restituisce sempre `undefined`.

    Cosa sbaglio?
    Grazie

    codice:
    <html>
    <head>
    <title>Seleziona Mailing List</title>
    <SCRIPT>
    <!--
     
    function controllo_check()
    {
        var cks = document.forms[0].chkParent;
        var checked = false;
        for(var i = 0; i < cks.length; i++)
        {
            if(cks[i].checked)
            {
                checked = true;
                break;
            }
        }
        return checked; 
     
    }
     
     
    function insertf1(f1) {
    if (!controllo_check())
        {
            //se non seleziono almeno un elemento, avviso e uscita
            alert("Devi selezionare almeno una Mailing List");
            return;
        }
        //altrimenti altra azione, per esempio stampa valore checkbox selezionato    
            alert("Valore del checkbox:" + document.myform.chkParent.value);
    }
     
     
    function testSelections(currSel)
    {
      // Inizializza il contatore nSel, nCheckboxes viene
      // impostato col numero di checkboxes con id=chk presenti nel FORM
      var n, nSel = 0, nCheckboxes = document.myform.chkParent.length;
     
      // Conta i checkboxes con id=chk selezionati
      for ( n = 0 ; n < nCheckboxes ; n++ ) if (document.myform.chk[n].checked) nSel++;
     
      if (nSel > 1)  // più di 1 selezione ?
        {
          // Resetta la selezione appena effettuata
          document.myform.chk[currSel].checked = false;
     
          // Messaggio da personalizzare, informare l'utente che deve
          // deselezionare un'opzione prima di effettuare la scelta corrente
          alert("Non è possibile selezionare più di una Mailing List.");
        }
    }
     
    // -->
     
     </script>
    </head>
    <body>
     
    <form id="myform" name="myform">
    <p class=blub><input type=checkbox id=chk name=chkParent value=4 onclick=testSelections(0);>ANAGNI</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent value=6 onclick=testSelections(1);>APRILIA</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent value=2 onclick=testSelections(2);>CASSINO</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent value=7 onclick=testSelections(3);>FORMIA</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent value=1 onclick=testSelections(4);>FROSINONE</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent value=5 onclick=testSelections(5);>LATINA</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent value=3 onclick=testSelections(8);>SORA</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent value=8 onclick=testSelections(9);>TERRACINA</p>
     
    <p class=blub>
    <a href="javascript:insertf1(document.myform.chkParent.value);">
    [img]/images/salva_button.gif[/img]</a></p>
    </form>
     
    </body>
    </html>

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    di campi checkbox ce ne sono molti, non puoi accedere al loro valore cosi:

    codice:
    document.myform.chkParent.value
    Cerca nel forum l'argomento è stato trattato più volte. Inoltre se non vuoi permettere che l'utente selezioni più di una checkbox allora ti conviene usare i radio button.

  3. #3
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Grazie.

    In realtà prima di postare ho anche cercato, ma con scarso successo.
    Ho anche provato a nominare differentemente i vari checkbox, ma così stampa

    Messaggio: 'document.myform.chkParent.value' è nullo o non è un oggetto

    codice:
    <p class=blub>
    <input type=checkbox id=chk name=chkParent1 value=4 onclick=testSelections(0);>ANAGNI</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent2 value=6 onclick=testSelections(1);>APRILIA</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent3 value=2 onclick=testSelections(2);>CASSINO</p>
    
    <p class=blub><input type=checkbox id=chk name=chkParent4 value=7 onclick=testSelections(3);>FORMIA</p>

  4. #4
    1 - Non mi piace che tutti i chk abbiamo lo stesso ID (id=chk )
    2 - document.myform.chkParent.value non esiste
    document.myform.chkParent è un array di input.

    Devi quindi andare a cercare quello eventualmente selezionato.
    Puoi farlo modificando il tuo script, ma puoi anche utilizzare un framework tipo JQuery o mootools che ti danno degli strumenti molto pontenti per interrogare il DOM.

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    codice:
    function controllo_check()
    {
        var cks = document.forms[0].chkParent;
        var checked;
        for(var i = 0; i < cks.length; i++)
        {
            if(cks[i].checked)
            {
                checked = cks[i];
                break;
            }
        }
        return checked; 
     
    }
    
     
    function insertf1(f1) {
    checkObj = controllo_check()
    if (!checkObj)
        {
            //se non seleziono almeno un elemento, avviso e uscita
            alert("Devi selezionare almeno una Mailing List");
            return;
        }
        //altrimenti altra azione, per esempio stampa valore checkbox selezionato    
            alert("Valore del checkbox:" + checkObj.value);
    }

  6. #6
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Anche con le modifiche proposte da Vindav l'errore è lo stesso:

    codice:
    <html>
    <head>
    <title>Seleziona Mailing List</title>
    <SCRIPT>
    <!--
     
    function controllo_check()
    {
        var cks = document.forms[0].chkParent;
        var checked;
        for(var i = 0; i < cks.length; i++)
        {
            if(cks[i].checked)
            {
                checked = cks[i];
                break;
            }
        }
        return checked; 
     
    }
    
     
    function insertf1(f1) {
    checkObj = controllo_check()
    if (!checkObj)
        {
            //se non seleziono almeno un elemento, avviso e uscita
            alert("Devi selezionare almeno una Mailing List");
            return;
        }
        //altrimenti altra azione, per esempio stampa valore checkbox selezionato    
            alert("Valore del checkbox:" + checkObj.value);
    }
     
    
     
     
    function testSelections(currSel)
    {
      // Inizializza il contatore nSel, nCheckboxes viene
      // impostato col numero di checkboxes con id=chk presenti nel FORM
      var n, nSel = 0, nCheckboxes = document.myform.chkParent.length;
     
      // Conta i checkboxes con id=chk selezionati
      for ( n = 0 ; n < nCheckboxes ; n++ ) if (document.myform.chk[n].checked) nSel++;
     
      if (nSel > 1)  // più di 1 selezione ?
        {
          // Resetta la selezione appena effettuata
          document.myform.chk[currSel].checked = false;
     
          // Messaggio da personalizzare, informare l'utente che deve
          // deselezionare un'opzione prima di effettuare la scelta corrente
          alert("Non è possibile selezionare più di una Mailing List.");
        }
    }
     
    // -->
     
     </script>
    </head>
    <body>
     
    <form id="myform" name="myform">
    
    
    
    <input type=checkbox id=chk name=chkParent1 value=1 onclick=testSelections(0);>ANAGNI</p>
    
    
    <input type=checkbox id=chk name=chkParent2 value=2 onclick=testSelections(1);>APRILIA</p>
    
    
    <input type=checkbox id=chk name=chkParent3 value=3 onclick=testSelections(2);>CASSINO</p>
    
    
    <input type=checkbox id=chk name=chkParent4 value=4 onclick=testSelections(3);>FORMIA</p>
    
    
    <input type=checkbox id=chk name=chkParent5 value=5 onclick=testSelections(0);>ANAGNI</p>
    
    
    <input type=checkbox id=chk name=chkParent6 value=6 onclick=testSelections(1);>APRILIA</p>
    
    
    <input type=checkbox id=chk name=chkParent7 value=7 onclick=testSelections(2);>CASSINO</p>
    
    
    <input type=checkbox id=chk name=chkParent8 value=8 onclick=testSelections(3);>FORMIA</p>
    
    
    <input type=checkbox id=chk name=chkParent9 value=9 onclick=testSelections(4);>FROSINONE</p>
    
    
    <input type=checkbox id=chk name=chkParent10 value=10 onclick=testSelections(5);>LATINA</p>
    
    
    <input type=checkbox id=chk name=chkParent11 value=11 onclick=testSelections(8);>SORA</p>
    
    
    <input type=checkbox id=chk name=chkParent12 value=12 onclick=testSelections(9);>TERRACINA</p>
    
    
    
    
    <a href="javascript:insertf1(document.myform.checkObj.value);">
    [img]/images/salva_button.gif[/img]</a></p>
    </form>
     
    </body>
    </html>

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    rimetti i name tutti uguali e vedrai che funziona, la modifica l'ho fatta basandomi sull'html che hai scritto nel primo post

  8. #8
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Originariamente inviato da Vindav
    rimetti i name tutti uguali e vedrai che funziona, la modifica l'ho fatta basandomi sull'html che hai scritto nel primo post
    Hai ragione! Mille volte grazie!!!

  9. #9
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da Gluck74
    1 - Non mi piace che tutti i chk abbiamo lo stesso ID (id=chk )
    2 - document.myform.chkParent.value non esiste
    document.myform.chkParent è un array di input.

    Ciao
    1 - Non è che è brutto, è che è proprio sbagliato avere id uguali. Gli id devono essere univoci. La parola id sta per identifier.
    2 - document.myform.chkParent non è un array, è una NodeList, con metodi e proprietà diversi dall'array.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.