Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema con valore radio

    ciao!
    ho un form con dentro vari radio button:
    codice:
    <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" name="myform">
                    <input type="radio" name="coll" value="C2.0" />C2.0
                    <input type="radio" name="coll" value="C2.2" />C2.2
                    <input type="radio" name="coll" value="C2.5" />C2.5
                    <input type="radio" name="coll" value="C2.6" />C2.6
    .........................
    </form>
    quando clicco sul bottone dovrei reperire il valore scelto.
    solo che esce sempre undefined:
    codice:
    function cercaArticolo() {
        alert(document.myform.coll.value);
    }
    mi sembra di aver fatto corretto.

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Succede perché document.myform.coll non è un campo radio, ma una COLLEZIONE di campi radio (una collezione è qualcosa di molto simile ad un array). Di conseguenza document.myform.coll non ha la proprietà value propria dei campi di un form. Quella la puoi estrarre da un singolo elemento della collezione, ad es.: document.myform.coll[2].value.

    P.S. Per sapere quale radio è selezionato devi far scorrere un ciclo sulla collezione, verificando per ciascun elemento se la proprietà checked ha valore true.
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

  3. #3
    ok grazie per la dritta:
    codice:
    function cercaArticolo() {
        var valChecked = 0;
        var collRadio = document.myform.coll;
        for(i = 0;i < collRadio.length; i++) {
            if(collRadio[i].checked == true) {
                valChecked = collRadio[i].value;
            }
        }
        alert(valChecked);
    }

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    È inutile che continui il ciclo una volta trovato il campo selezionato. Arrivato a quel punto ti conviene fermare la carrozza:

    codice:
    function cercaArticolo () {
        var valChecked = 0, collRadio = document.myform.coll;
        for (valChecked; valChecked < collRadio.length && !collRadio[valChecked].checked; valChecked++);
        alert(collRadio[valChecked].value);
    }
    P.S. Questo è un tipico esempio di ciclo senza parentesi graffe. Lo si riconosce dal caratteristico punto e virgola (che io ti ho evidenziato in rosso) in loro vece. Tutte le operazioni si svolgono infatti nei tre segmenti della dichiarazione.

    P.P.S. Col codice che ti ho postato la dichiarazione della variabile ciclata (valChecked) avviene fuori dal ciclo. Ma in quello che avevi scritto tu la variabile ciclata (i) veniva dichiarata col ciclo. Tutto ok, se non fosse che ti eri dimenticato la parolina magica "var", senza la quale la nostra variabile diventa globale. Quando dichiari un ciclo ricordati che devi sempre fare una cosa del genere:

    codice:
    for (var i = 0; i < collRadio.length; eccetera eccetera
    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

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.