Tengo un problema extraño con mi programa JS. Tenía esto funcionando correctamente, pero por alguna razón ya no funciona. Solo quiero encontrar el valor del botón de opción (cuál está seleccionado) y devolverlo a una variable. Por alguna razón, sigue regresando undefined
.
Aquí está mi código:
function findSelection(field) {
var test = 'document.theForm.' + field;
var sizes = test;
alert(sizes);
for (i=0; i < sizes.length; i++) {
if (sizes[i].checked==true) {
alert(sizes[i].value + ' you got a value');
return sizes[i].value;
}
}
}
submitForm
:
function submitForm() {
var genderS = findSelection("genderS");
alert(genderS);
}
HTML:
<form action="#n" name="theForm">
<label for="gender">Gender: </label>
<input type="radio" name="genderS" value="1" checked> Male
<input type="radio" name="genderS" value="0" > Female<br><br>
<a href="javascript: submitForm()">Search</A>
</form>
javascript
html
for-loop
radio-button
mkyong
fuente
fuente
Respuestas:
Puedes hacer algo como esto:
jsfiddle
Editar: Gracias HATCHA y jpsetung por sus sugerencias de edición.
fuente
@
sintaxis fue obsoleta incluso antes (jquery 1.2)@
definitivamente debería eliminarsedocument.querySelector()
probablemente debería ser el enfoque recomendado en JavaScript directo ahora.Esto funciona con cualquier explorador.
Esta es una manera simple de obtener el valor de cualquier tipo de entrada. Usted también no necesita incluir el trazado de jQuery.
fuente
document.querySelector(...)
esnull
.var selector = document.querySelector('input[name="genderS"]:checked'); if(selector) console.log(selector.value);
:checked
truco lo logró para mí ... para mí, la solución para leer los botones de radio de un formulario de plantilla de Meteor fueaccountType = template.find("[name='optradio']:checked").value;
fuente
document.forms.your-form-name.name-shared-by-radio-buttons.value
Desde jQuery 1.8, la sintaxis correcta para la consulta es
$('input[@name="genderS"]:checked').val();
Ya no , que funcionaba en jQuery 1.7 (con la @ ).fuente
Versión ECMAScript 6
fuente
La solución más simple:
fuente
Prueba esto
Un violín aquí .
fuente
Editar: como dijo Chips_100, debe usar:
directamente sin usar la variable de prueba.
Vieja respuesta:
¿No te debería
eval
gustar esto?No sé cómo funciona, pero para mí solo estás copiando una cadena.
fuente
var sizes = document.theForm[field];
y eliminar la primera asignación, por lo que ya no usa latest
variable.eval('var sizes=document.theForm.' + field)
?var sizes = eval(test);
funcionaría de esa manera (solo la probé en firebug).field
entre paréntesis. ¿Alguna idea de por qué?Este es JavaScript puro, basado en la respuesta de @Fontas pero con código de seguridad para devolver una cadena vacía (y evitar a
TypeError
) si no hay un botón de radio seleccionado:El código se descompone así:
<input>
tipo, (b) tiene unname
atributo degenderS
y (c) está marcado.genderSRadio
variable es verdadera si la línea 1 encuentra el control y nula / falsa si no lo encuentra.Para JQuery, use la respuesta de @ jbabey y tenga en cuenta que si no hay un botón de radio seleccionado, volverá
undefined
.fuente
En caso de que alguien buscara una respuesta y aterrizara aquí como yo, desde Chrome 34 y Firefox 33 puede hacer lo siguiente:
o más simple:
referencia: https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList/value
fuente
Aquí hay un ejemplo para radios donde no se utiliza el atributo Comprobado = "verificado"
DEMO : http://jsfiddle.net/ipsjolly/hgdWp/2/ [ Haga clic en Buscar sin seleccionar ninguna Radio ]
Fuente: http://bloggerplugnplay.blogspot.in/2013/01/validateget-checked-radio-value-in.html
fuente
Aquí hay una buena manera de obtener el valor del botón de opción marcado con JavaScript simple:
Fuente: https://ultimatecourses.com/blog/get-value-checked-radio-buttons
Usando este HTML:
También puede usar Array Buscar la
checked
propiedad para buscar el elemento marcado:fuente
Usando un javascript puro, puede manejar la referencia al objeto que despachó el evento.
fuente
supongamos que necesita colocar diferentes filas de botones de opción en un formulario, cada uno con nombres de atributos separados ('opción1', 'opción2', etc.) pero con el mismo nombre de clase. Quizás los necesite en varias filas donde cada uno enviará un valor basado en una escala de 1 a 5 correspondiente a una pregunta. puedes escribir tu javascript así:
También insertaría el resultado final en un elemento de formulario oculto para enviar junto con el formulario.
fuente
fuente
Si es posible que asigne un Id para su elemento de formulario (), esta forma puede considerarse como una alternativa segura (especialmente cuando el nombre del elemento del grupo de radio no es único en el documento):
HTML:
fuente
etc, entonces use solo
O
fuente
fuente