Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    99

    Problema legger valore radiobutton

    Salve Ragazzi,
    Sono un neofita di Javascript e sto iniziando a muovermi un pò col far controlli vari nelle pagine coi form. Ho un problema...
    Leggo i valori dei campi di un form in questo modo:
    var mat = document.modulo.mat.value;//Mat campo di testo

    e logicamente dopo ci faccio i controlli vari (es. se pieno se uguale ad un valore etc)

    Il problema lo tengo sui radiobutton.
    Ho una riga con scelta radiobutton SI NO di questo tipo:

    <input type="radio" name="sol" value="0" <?php if ($tfr=='0') { echo 'checked="checked"';}?>/>NO

    <input type="radio" name="sol" value="1" <?php if (($tfr=='1') || (!$tfr)) { echo 'checked="checked"';}?>/>SI

    Ho provato nella pagina Js a leggerlo in questo modo ma mi restituisce sempre Undefined

    var sol = document.modulo.sol.value;
    alert (sol); // Mi da undefined

    Come posso leggere se il valore e 0 o 1?
    Credo sia una cosa semplicissima per chi ha dimestichezza

    Ringrazio anticipatamente

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Se document.modulo.sol è un gruppo di pulsanti radio allora è una NodeList, non un HTMLInputElement, di conseguenza non ha la proprietà value. Una discussione simile è stata appena affrontata qua.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    99
    Avevo cercato la spiegazione su google ma sinceramente ho notato che per leggere il valore di 2 radiobutton con lo stesso name quasi tutti usavano un ciclo!
    Non c'è soluzione piu semplice per capire quali dei 2 è selezionato?

    Grazie Carlo

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Se sai già che non saranno né più né meno di due puoi fare così:
    codice:
    var tuoValore = document.modulo.sol[new Number(document.modulo.sol[1].checked)].value;
    oppure
    codice:
    var tuoValore = document.modulo.sol[1 ^ document.modulo.sol[0].checked].value;
    oppure
    codice:
    var tuoValore = document.modulo.sol[document.modulo.sol[0].checked ? 0 : 1].value;
    A te la scelta...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    99
    Grande funziona!!!
    Ti ringrazio Carlo
    Gentilmente mi spieghi anche cosa significa significa??

    sol[new Number(document.modulo.sol[1].checked)]

  6. #6
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da cadan2
    Grande funziona!!!
    Ti ringrazio Carlo
    Gentilmente mi spieghi anche cosa significa significa??

    sol[new Number(document.modulo.sol[1].checked)]
    Significa che se è selezionato il secondo radio ottengo new Number(true) che viene convertito in 1; se è selezionato il primo radio button ottengo new Number(false) che viene convertito in 0.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    99
    Ah ho capito
    Quindi è come se scrivesse:
    var sol = document.modulo.sol[0].value; // se new number è falso
    var sol = document.modulo.sol[1].value; // se new number è vero

    E in questo modo avrò in "sol" il valore di quello checked.


    Quindi per questo se son piu di 2 radiobutton serve fare il ciclo per vedere quale di essi è checked e per quello checked appunto copiare il value in una variabile.
    Quindi i valori a prescindere se checked o meno stanno in una sorta di array o lista , nel mio caso:
    sol[0]-->0
    sol[1]-->1
    sol[2]-->??? mi darà Undefined???

    Ho capito bene tutto?

  8. #8
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Hai capito bene tutto. Si tratta di una specie di array, non un array vero e proprio (tecnicamente una NodeList, con metodi e proprietà leggermente diversi dall'array). Quindi se son più di due devi fare un ciclo.

    P.S. Io preferisco il secondo esempio, gli operatori binari fanno sempre la loro figura

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    99
    Sei stato chiarissimo.. Ultimo quesito
    Ma html crea NodeList a seconda di quanti elementi con lo stesso nome ci son nel modulo??
    Tipo se metto due campi di testo con stesso noome, mi creera anche in quel caso una Node?
    Oppure per ogni input type diverso HTML crea NodeList o semplici HTMLInputElement??

    Ti chiedo perchè sto alle prime armi e cerco di capire a fondo LUI come ragiona per poter ragionare di conseguenza

  10. #10
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Puoi verificarlo di persona...
    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    </head>
    
    <body>				
    <form name="myForm">
    
    
    <input type="text" name="campoTest" />
    
    <input type="text" name="campoTest" />
    
    
    <input type="button" onclick="alert(this.form.campoTest.toString());" value="Verifica" /></p>
    </form>
    </body>
    </html>
    
    </body>
    </html>

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.