Quiero obtener el valor seleccionado de un grupo de botones de radio.
Aquí está mi HTML:
<div id="rates">
<input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
<input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
<input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate
</div>
Aquí está mi .js:
var rates = document.getElementById('rates').value;
var rate_value;
if(rates =='Fixed Rate'){
rate_value = document.getElementById('r1').value;
}else if(rates =='Variable Rate'){
rate_value = document.getElementById('r2').value;
}else if(rates =='Multi Rate'){
rate_value = document.getElementById('r3').value;
}
document.getElementById('results').innerHTML = rate_value;
Sigo indefinido.
javascript
html
radio-button
ZombiBatman
fuente
fuente
$("input[type='radio'][name='rate']:checked").val();
.checked
<form></form>
contenedor.Respuestas:
El elemento de tasas es a
div
, por lo que no tendrá un valor. Esto es probablemente de dondeundefined
viene el.La
checked
propiedad le dirá si el elemento está seleccionado:fuente
$("input[name=rate]:checked").val()
[checked]
) busca el atributo (es decir, el estado inicial). En su lugar:checked
, debe usar , que busca la propiedad (es decir, el estado actual), y que casi siempre es lo que desea.document.querySelectorAll("input[name=rate]:checked")[0].value
Esto funciona en IE9 y superior y en todos los demás navegadores.
fuente
:checked
selector.rate
no son necesarias.:checked
elementos, tal vez tiene todo "en hash y en caché" y es unaO(1)
operación. A menos que lo haya perfilado para indicar que algo así como el tiempo de consulta crece con el número de elementos en la página, o a menos que comprenda el código fuente del navegador detrás de él, no puede saberlo.Puede obtener el valor utilizando la
checked
propiedadfuente
break
oreturn
dentro delif
bloque detenga pases adicionales a través del ciclo. Un punto menor, pero de buen estilo.Para ustedes, personas que viven al límite:
Ahora hay algo llamado RadioNodeList y el acceso a su propiedad de valor devolverá el valor de la entrada actualmente verificada. Esto eliminará la necesidad de filtrar primero la entrada 'marcada' como vemos en muchas de las respuestas publicadas.
Formulario de ejemplo
Para recuperar el valor marcado, puede hacer algo como esto:
El JSFiddle para demostrarlo: http://jsfiddle.net/vjop5xtq/
Tenga en cuenta que esto se implementó en Firefox 33 (todos los demás navegadores principales parecen admitirlo). Los navegadores más antiguos requerirán un polfyill para
RadioNodeList
que esto funcione correctamentefuente
form.elements["test"].value
funciona muy bien en Chrome [Versión 49.0.2623.87 m].El que funcionó para mí se muestra a continuación en api.jquery.com.
HTML
JavaScript
La variable selectedOption contendrá el valor del botón de opción seleccionado (es decir) o1 u o2
fuente
Otra opción (aparentemente más antigua) es usar el formato: "document.nameOfTheForm.nameOfTheInput.value;" eg document.mainForm.rads.value;
Puede hacer referencia al elemento por su nombre dentro de un formulario. Sin embargo, su HTML original no contiene un elemento de formulario.
Fiddle aquí (funciona en Chrome y Firefox): https://jsfiddle.net/Josh_Shields/23kg3tf4/1/
fuente
Use document.querySelector ('input [tipo = radio]: marcado'). Value; para obtener el valor de la casilla seleccionada, puede utilizar otros atributos para obtener el valor como nombre = género etc., por favor pasar por debajo de fragmento de código sin duda lo hará útil para usted,
Solución
Gracias
fuente
CÓDIGO HTML:
<input type="radio" name="rdoName" value="YES"/> <input type="radio" name="rdoName" value="NO"/>
CODIGO JQUERY:
Conseguirás
fuente
En Javascript podemos obtener los valores mediante el uso de Id "
getElementById()
" en el código anterior que ha publicado que contiene el nombre, no el Id, para que pueda modificarlo asíuse este valor de tasa de acuerdo con su código
fuente
Ha pasado más o menos un año desde que se hizo la pregunta, pero pensé que era posible una mejora sustancial de las respuestas. Considero que este es el script más fácil y versátil, porque verifica si se ha verificado un botón y, de ser así, cuál es su valor:
También puede llamar a la función dentro de otra función, como esta:
fuente
Suponiendo que la
myForm
variable a continuación se refiere a su elemento de formulario y que sus botones de radio comparten el nombre "my-radio-button-group-name", lo siguiente es puro JavaScript y cumple con los estándares (aunque no lo he verificado para que esté disponible en todas partes ):Lo anterior arrojará el valor de un elemento de botón de opción marcado (o seleccionado, como también se le llama), si lo hay, o de lo
null
contrario. El quid de la solución es lanamedItem
función que funciona específicamente con los botones de opción.Consulte HTMLFormElement.elements , HTMLFormControlsCollection.namedItem y especialmente RadioNodeList.value , ya que
namedItem
generalmente devuelve unRadioNodeList
objeto.Utilizo MDN porque permite rastrear el cumplimiento de las normas, al menos en gran medida, y porque es más fácil de comprender que muchas publicaciones WhatWG y W3C.
fuente
RadioNodeList
través de algo comoform.elements[name]
oform[name]
(tal vez, una especulación) o a través de mi sintaxis anterior.llamar directamente a un botón de radio muchas veces le da el valor del PRIMER botón, no el botón COMPROBADO. en lugar de recorrer los botones de radio para ver cuál está marcado, prefiero llamar a una
onclick
función de JavaScript que establezca una variable que luego se pueda recuperar a voluntad.que llama:
Una ventaja adicional es que puedo tratar datos y / o reaccionar a la comprobación de un botón (en este caso, habilitar el botón ENVIAR).
fuente
onchange
lugar, debe vincular el evento, en caso de que el usuario use un teclado.Una mejora a las funciones sugeridas anteriores:
fuente
Mi opinión sobre este problema con javascript puro es encontrar el nodo marcado, encontrar su valor y sacarlo de la matriz.
Tenga en cuenta que estoy usando funciones de flecha . Vea este violín para un ejemplo de trabajo.
fuente
tagName === 'INPUT'
cheque para asegurarme de que no está trabajando en ninguna otra etiqueta que no seainput
.Si está utilizando jQuery:
$('input[name="rate"]:checked').val();
fuente
Puede usar
.find()
para seleccionar el elemento marcado:fuente
luego...
fuente
rates.rate.value
norates.value
document.getElementById("rates").rate.value
[o]document.forms[0].rate.value
verificar el valor por ID:
fuente
Usé la función jQuery.click para obtener el resultado deseado:
Espero eso ayude.
fuente
Si los botones tienen el formato
var myform = new FormData(getformbywhatever); myform.get("rate");
QuerySelector anterior, es una mejor solución. Sin embargo, este método es fácil de entender, especialmente si no tienes ni idea sobre CSS. Además, es muy probable que los campos de entrada estén en forma de todos modos.
No comprobé, hay otras soluciones similares, perdón por la repetición
fuente
no puede obtener valores de un botón de radio como ese en su lugar usar
fuente
Si está utilizando el
JQuery
, utilice el fragmento de abajo para el grupo de botones de radio.fuente
Simplemente use:
document.querySelector('input[rate][checked]').value
fuente
document.querySelector('input[name = rate]:checked').value
fuente
También puede recorrer los botones con forEach-loop en los elementos
fuente
https://codepen.io/anon/pen/YQxbZJ
El HTML
El JS
fuente
En php es muy fácil la
página html
Tomar valor de forma a php
fuente