Tengo dos botones de radio dentro de un formulario HTML. Aparece un cuadro de diálogo cuando uno de los campos es nulo. ¿Cómo puedo verificar si se ha seleccionado un botón de opción?
javascript
novato
fuente
fuente
Respuestas:
Supongamos que tienes HTML como este
Para la validación del lado del cliente, aquí hay algunos Javascript para verificar cuál está seleccionado:
Lo anterior podría hacerse más eficiente dependiendo de la naturaleza exacta de su marcado, pero eso debería ser suficiente para comenzar.
Si solo está buscando ver si se ha seleccionado algún botón de radio en cualquier lugar de la página, PrototypeJS lo hace muy fácil.
Aquí hay una función que devolverá verdadero si se selecciona al menos un botón de radio en algún lugar de la página. Una vez más, es posible que esto deba modificarse según su HTML específico.
Para la validación del lado del servidor (recuerde, ¡no puede depender completamente de Javascript para la validación!) , Dependería de su idioma de elección, pero solo verificaría el
gender
valor de la cadena de solicitud.fuente
Con jQuery , sería algo así como
Déjame dividirlo en pedazos para cubrirlo más claramente. jQuery procesa cosas de izquierda a derecha.
input
lo limita a las etiquetas de entrada.[name=gender]
lo limita a etiquetas con el nombre género dentro del grupo anterior.:checked
lo limita a casillas de verificación / botones de radio que están seleccionados dentro del grupo anterior.Si desea evitar esto por completo, marque uno de los botones de opción como marcado (
checked="checked"
) en el código HTML, lo que garantizaría que siempre se seleccione un botón de opción .fuente
Una manera vainilla de JavaScript
fuente
name
.Solo trato de mejorar la solución de Russ Cam con un poco de azúcar selector de CSS incluido con el JavaScript de vainilla.
No hay una necesidad real de jQuery aquí, querySelectorAll es ampliamente compatible ahora.
Editar: solucioné un error con el selector css, he incluido las comillas, aunque puede omitirlas, en algunos casos no puede, por lo que es mejor dejarlas.
fuente
a[href^="http://"]
) serían necesarios, y la consistencia es más fácil de mantener. Además, esto permite que la declaración de atributo coincida con el HTML correspondiente.código HTML
Código Javascript:
fuente
Puedes usar este sencillo script. Puede tener varios botones de opción con los mismos nombres y valores diferentes.
fuente
document.forms[0].elements['nameOfRadioList'].value
Los guiones de esta página me ayudaron a encontrar el guión a continuación, que creo que es más completo y universal. Básicamente, validará cualquier número de botones de radio en un formulario, lo que significa que se asegurará de que se haya seleccionado una opción de radio para cada uno de los diferentes grupos de radio dentro del formulario. Por ejemplo, en el formulario de prueba a continuación:
El script RadioValidator se asegurará de que se haya dado una respuesta tanto para 'test1' como para 'test2' antes de enviar. Puede tener tantos grupos de radio en el formulario e ignorará cualquier otro elemento del formulario. Todas las respuestas de radio faltantes se mostrarán dentro de una sola ventana emergente de alerta. Aquí va, espero que ayude a la gente. Cualquier corrección de errores o modificaciones útiles son bienvenidas :)
fuente
Tenga en cuenta este comportamiento con jQuery al obtener valores de entrada de radio:
Por
$('input[name="myRadio"]').val()
lo tanto , no devuelve el valor verificado de la entrada de radio, como es de esperar, devuelve el valor del primer botón de radio.fuente
Con mootools ( http://mootools.net/docs/core/Element/Element )
html:
js:
fuente
Esta es una función de utilidad que he creado para resolver este problema
fuente
Esto sería válido para botones de radio que comparten el mismo nombre, no se necesita JQuery.
Si estamos hablando de casillas de verificación y queremos una lista con las casillas marcadas compartiendo un nombre:
fuente
fuente
solo una pequeña modificación a Mark Biek;
CÓDIGO HTML
y código Javascript para verificar si el botón de radio está seleccionado
fuente
Hay una forma muy sofisticada de validar si alguno de los botones de radio está marcado con ECMA6 y el método
.some()
.HTML:
Y javascript:
isAnyRadioButtonChecked
serátrue
si alguno de los botones de radio está marcado yfalse
si ninguno de ellos está marcado.fuente
fuente
http://www.somacon.com/p143.php/
fuente
Con JQuery, otra forma de verificar el estado actual de los botones de opción es obtener el atributo 'verificado'.
Por ejemplo:
En este caso, puede verificar los botones usando:
fuente
$("#gender_male").attr("checked")
es una cadena"checked"
y no un booleano.Este código alertará al botón de radio seleccionado cuando se envíe el formulario. Usó jQuery para obtener el valor seleccionado.
fuente
Solía operador propagación y algunos para comprobar menos un elemento de la matriz pasa la prueba.
Comparto por quien se preocupe.
fuente
Aquí está la solución que se amplía para no seguir adelante con el envío y enviar una alerta si los botones de opción no están marcados. ¡Por supuesto, esto significaría que tienes que desmarcarlos para empezar!
Solo recuerde configurar la identificación ('radio1', 'radio2' o como se llame) en el formulario para cada uno de los botones de radio o el script no funcionará.
fuente
if (!document.getElementById('radio1').checked && !document.getElementById('radio2').checked) { alert(); }
.Un ejemplo:
fuente
La forma
La secuencia de comandos
El violín: http://jsfiddle.net/PNpUS/
fuente
Solo quiero asegurarme de que algo se seleccione (usando jQuery):
fuente
Si desea JavaScript vainilla, no desea saturar su marcado agregando ID en cada botón de opción , y solo se preocupa por los navegadores modernos , el siguiente enfoque funcional me resulta un poco más sabroso que un bucle for:
Si ninguna de las dos está marcada, volverá
undefined
(aunque podría cambiar la línea de arriba para devolver otra cosa, por ejemplo, para que sefalse
devuelva, podría cambiar la línea relevante de arriba a:)}).pop() || {value:false}).value;
.También existe el enfoque prospectivo de polyfill ya que la interfaz RadioNodeList debería facilitar el uso de una
value
propiedad en la lista de elementos de radio secundarios de formulario (que se encuentra en el código anterior comoformElement[radioName]
), pero eso tiene sus propios problemas: cómo polyfill RadioNodeList ?fuente
Esto también está funcionando, evitando llamar a una identificación de elemento pero llamándolo usando como un elemento de matriz.
El siguiente código se basa en el hecho de que una matriz, denominada grupo de botones de radio, está compuesta por elementos de botones de radio en el mismo orden en que se declararon en el documento html:
fuente
HTML:
JAVAScript:
fuente
Proporcione botones de radio, el mismo nombre pero diferentes ID.
fuente