2010-10-26 23 views
11

Estoy tirando dinámicamente y mostrando preguntas de botones de radio en un formulario (separados en secciones diferentes por pestañas jquery).marcando al menos un botón de opción seleccionado de cada grupo (con jquery)

Así que hay muchos botones de radio de 2, 3, 4, 5 etc. juntos, que tienen el mismo "nombre" pero diferentes identificadores.

Cuando pulse siguiente entre las secciones, quiero verificar que se haya seleccionado al menos un botón de opción para cada grupo.

(Cuando se carga el formulario, los botones de radio no tiene ninguno marcada por defecto y tiene que ser de esta manera.)

puedo bucle a través de los botones de radio de la sección actual, pero no estoy seguro de cómo comprobar fácilmente ese ha sido revisado para cada grupo?

Respuesta

21

En ausencia de cualquier relación entre elementos, o cómo encontrar los nombres de grupo, solo puedo darle un puntero, pero esto debería funcionar (la comprobación se activa al hacer clic en el elemento id="nextButton", pero obviamente puede ser personalizado para cualquier otro evento apropiado, tal como $('form').submit(), por ejemplo):

$(document).ready(
function(){ 
    $('#nextButton').click(
    function(){ 

    var radioName = something; // use this if there's a relationship between the element 
           // triggering this check and the radio buttons 

     if ($('input[name='+ radioName +']:checked').length) { 
      // at least one of the radio buttons was checked 
      return true; // allow whatever action would normally happen to continue 
     } 
     else { 
      // no radio button was checked 
      return false; // stop whatever action would normally happen 
     } 
    } 
); 
} 
); 
3
$("input[@name='the_name']:checked").length; 
+2

La sintaxis '@' ha sido [obsoleta desde jQuery 1.1.4 (en la sección de comentarios)] (http://api.jquery.com/attribute-equals-selector/). –

2
if ($("input:checked").length < Num_of_groups) 
{ 
    alert ("Please select atleast one radio button in each group"); 
    return false; 
} 
0

probar este

if ($('input[name='+radioName+']:checked').length == '0'){ 
    // do something 
    return false; 
} 
+2

Esto básicamente hace lo mismo que la respuesta aceptada, es simplemente peor. ¿Por qué compararías un campo 'Number' con un literal' string'? – meskobalazs

Cuestiones relacionadas