2011-06-30 21 views
12

Quiero verificar cuál es la entrada de radio seleccionada.javascript radio seleccionada

aquí está mi código.

<input name="u_type" type="radio" value="staff" id="u_type" checked="checked" /> Staff 
<input name="u_type" type="radio" value="admin" id="u_type" /> Admin 
<input id="add_user" name="add_user" type="button" onclick="addUser();" value="Add" class="submitButton admin_add" /> 

function addUser() 
{ 
//how to check what is the selected radio input 
} 

gracias.

+0

¿Alguna posibilidad de que use jQuery o pueda usarla en su código? –

+0

Si solo tiene dos botones, esto le ayudará a: http://stackoverflow.com/questions/1423777/how-can-i-check-if-a-radio-button-is-selected-in-javascript –

Respuesta

20
function addUser() { 
    //how to check what is the selected radio input 
    alert(getCheckedRadioValue('u_type')); 
} 

function getCheckedRadioValue(name) { 
    var elements = document.getElementsByName(name); 

    for (var i=0, len=elements.length; i<len; ++i) 
     if (elements[i].checked) return elements[i].value; 
} 

y los ID de elemento debe ser diferente.

+2

¡Debería llamarse * getCheckedRadioValue * ya que no devuelve el ID HTML de la radio como puede sugerir! –

+0

@ sorx00 AFAICT '++ i' omitiría la primera aparición, estoy más interesado en' i ++ ' – metaleap

+0

@metaleap no lo creo http://stackoverflow.com/questions/3469885/somevariable-vs -variable-en-javascript – sorx00

-1

La siguiente es la aplicación de jQuery para obtener el valor de un botón de radio

$("#u_type").click(function() { 
var value = $(this).val(); 
}); 

Si desea utilizar javascript, entonces:

function get_radio_value() 
{ 
for (var i=0; i < document.form.u_type.length; i++) 
{ 
    if (document.form.u_type[i].checked) 
    { 
    var val = document.form.u_type[i].value; 
    } 
    } 
} 
4
$('input[name=u_type]:checked').val() 

le dará el valor de la opción seleccionada que puede, por supuesto, asignar a una variable. Debido a las advertencias, también debo señalar que se trata de jquery, una útil biblioteca de JavaScript para facilitar la manipulación de DOM y con una excelente compatibilidad entre navegadores. Se puede encontrar here.

+0

OP no dijo nada sobre jQuery. –

+2

Es cierto, pero jquery es javascript. – kinakuta

+2

@kinakuta: ¿Entonces? Si una pregunta solo está etiquetada con 'javascript', debe suponer que no se debe utilizar ninguna otra biblioteca. Y si usa uno, debe indicarlo claramente en su respuesta y vincularlo. –

0

No debe tener dos elementos de radio con la misma identificación. Es necesario cambiar uno de los identificadores a continuación, comprobar los dos botones de radio como:

if(document.getElementById("u_type").checked == true) 
{ 
    //do something 
} 

yo recomendaría usar jQuery para hacer esto en lugar de JS nativos.

+2

No hay ninguna razón para cargar TODO jQuery cuando un par de líneas de código serán suficientes. – jsonnull

+0

De acuerdo. Me sale un poco Hornpiped porque cuando pienso js creo que jquery. Depende de las circunstancias. –

+0

¿Por qué estás comparando un booleano contra verdadero? 'if (document.getElementById (" u_type "). checked)' –

1

Como alternativa a la sugerencia de kmb385, podría envolver sus entradas en un formulario y asegurarse de que todos los nombres de entrada sean diferentes (tiene dos nombres u_type).

A continuación, puede acceder a las entradas como document.formname.inputname.checked, que devolverá verdadero o falso.

6

para obtener el valor del botón de opción está marcada, sin jQuery:

var radios = document.getElementsByName("u_type"); 
for(var i = 0; i < radios.length; i++) { 
    if(radios[i].checked) selectedValue = radios[i].value; 
} 

(asumiendo que selectedValue es una variable definida en otro lugar)

Cuestiones relacionadas