Obtener el valor de un RadioButton seleccionado con JavaScript

Patxi Echarte, September 5th, 2005

Esta es una de esas cosas que las haces de ciento a viento y que cada vez que toca hacerla de nuevo, o no hay forma de acordarse cómo hacerlo o de dónde lo habíamos utilizado, para hacer un “copypaste”.

El siguiente HTML monta un formulario de ejemplo con el cual se solicita al usuario que elija su sistema operativo favorito.

<form name="frmSO">
<input type="radio" name="so" value="windows">Windows
<input type="radio" name="so" value="linux">Linux
<input type="radio" name="so" value="osx">OSX
<input type="radio" name="so" value="other">Other
</form>

No hay una forma directa de obtener qué radio button está seleccionado y saber así su valor. Si es la primera vez que lo intentas seguramente habrás intentado hacer algo como document.form.so.value y te habrás dado cuenta que eso no funciona, y es normal ya que si te fijas en el html, tenemos 4 controles con el mismo nombre. Para poder obtener el valor seleccionado, cada “conjunto” de controles radio está representado en JavaScript mediante un array, de forma que debemos recorrer ese array para obtener la opción seleccionada. El siguiente código nos facilita el trabajo:

function getRadioButtonSelectedValue(ctrl)
{
    for(i=0;i<ctrl.length;i++)
        if(ctrl[i].checked) return ctrl[i].value;
}

Ahora ya podríamos utilizar esta función para obtener el valor seleccionado, pasándole como parámetro el control radiobutton del que queremos obtener el valor, en nuestro caso: getRadioButtonSelectedValue(document.frmSO.so);.

Comparte esta información

29 Comentarios para “Obtener el valor de un RadioButton seleccionado con JavaScript”

  1. ups dice:

    ¿no deberías usar el atributo id en vez el name?

  2. Patxi dice:

    Pues depende… Si estás haciendo una página que valide como XHMTL estricto, tendrías que sustituir el atributo name del form por id y añadir el id al resto de elementos del formulario, manteniendo también el atributo name. Luego en la llamada a la función, habría que utilizar document.getElementById(’so’). Este es el DTD del XHTML estricto http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

    Sin embargo si no necesitas validar la página como estricta, por ser una página ya existente, por compatibilidad o por lo que sea, es posible mantener el atributo name en el form, siendo el código JavaScript correcto en ese caso

  3. Juan dice:

    Muchas gracias, esto ya me estaba deseperando

  4. Ariel dice:

    me tuvo un buen rato el problemilla ese
    te agradesco mucho haber publicado esto

  5. Dante dice:

    Muchas gracias.

  6. Carlos dice:

    Hola, tengo una página en la que genero un radio button por cada registro que me envie la base de datos, el problema se presenta cuando al extraer registros de la base de datos me devuelve menos de 2 registros entonces solo genero 0 o 1 registro pero el script no funciona pues la propiedad .length me muestra como no definida, como puedo saber cuantos radio button he puesto utilizando javascript???

    Saludos
    Carlos Rojas

    por favor enviame la respuesta a :

    ca_rl@QUITAESTOhotmail.comQUITAESTO

  7. René dice:

    Graciaaaaaaaas!!!!!
    Puta, ya me tenía chato esa we… =)
    Espero no tener el problema de Carlos, bueno, si me sale aquí estaremos nuevamente.
    Saludos!!!

  8. sandra dice:

    hola, tengo un problemilla, a ver si puede ayudarme, pliz, necesito validar un radio que al pasar los datos por el formulario me obligue haber activado al menos un radio. muchas gracias.

  9. Patxi dice:

    Hola, podrías utilizar la función descrita, comprobando antes de hacer el submit del formulario que el valor del control que quieres comprobar sea distinto de null, o que corresponda con uno de los valores permitidos.

  10. francisco navarro dice:

    muchas gracias es una informacion muy buena.

  11. Chuso dice:

    Hola, buenas, quisiera saber como se puede hacer que en un formulario, al darle a enviar, sino supera la validación, me vuelva a recargar el formulario con los valores introducidos por parte del usuario, sobre todo en los Radio Button y en los Textarea.

  12. jose Moreno dice:

    gracias me resolvio un problema jeje!

  13. snype dice:

    gracias

  14. JuanM dice:

    Gracias me ha sido de mucha utilidad. Ya me estaba comiendo el coco con el tema.

  15. Ed dice:

    Muchas grax

  16. EAZ py dice:

    Gracias viejo, estaba bastante complicado ya este temilla jojo

  17. jose dice:

    hola yo tengo el mismo poblema pero yo los datos los estoy mostrndo en un alert
    function escribe()
    {

    alert(”Nombre: “+fdp.nombre.value + “\nClave: “+fdp.clave.value +”\nSexo: “+fdp.sexo.value+”\nSigno zodiacal: “+fdp.signo.value+”\nHobie: “+fdp.hobie.value )
    }

    como puedo usar esa guncon dentro de la mia paar ke me muestre el calor del radio button

  18. Alrevez dice:

    Muchas gracias

  19. jeta26 dice:

    Buenas, pues a ver, si el radio solo tiene un registro yo lo he solucinado de esta forma.

    function getRadioButtonSelectedValue(ctrl){
    if(ctrl.length == undefined){
    return ctrl.value;
    }else{
    for(i=0;i

  20. Fran dice:

    Gracias por aportar la solución

  21. Gajupo :) dice:

    Gracias, por el codigo, me sirvio de mucho.
    Salu2………..

  22. Lidia dice:

    Sigan adelante con este tipo de ayuda, me fue muy util

  23. gabriel dice:

    Bueno la verdad yo tengo un incognita.
    despues de obtener el valor del Radio Button…como hago para que se encienda el radio que tiene el valor.
    esto es un poco tonto pero no lo he podido hacer…
    Gracias…

  24. Patxi dice:

    Hola Gabriel, si tienes en ctrl el control que representa el radiobutton, tienes que poner su propiedad checked a true

    ctrl.checked = true;

  25. gabriel dice:

    Hola Patxi, muchas gracias por la info…

  26. Paty dice:

    Bendito Internet, Muchas gracias me fue de mucha utilidad. Gracias

  27. Mario dice:

    Muchas gracias, como dices, despues tantas veces hacerlo, no recuerdas en donde lo utilizaste.
    Despues de estar un rato atorado encontré tu solución.

  28. Roberth dice:

    hola muchas graias me sirvio de mucho buen dia

  29. magasys dice:

    je je je .. que bestialidad hice: “document.form.so.value”, y hata esto: “document.form.so.checked”…
    Y tu script me ha parecido muy bueno, gracias !!!!
    LMGT

Deja un comentario