2010-10-20 15 views
25

Me gustaría comprobar el primer botón de opción de cada grupo. Pero hay algunos botones de opción que están desactivados, por lo que el script debe ignorarlos y pasar al siguiente botón no desactivado.Verificar el primer botón de opción con JQuery

escribí algo como esto pero no funciona:

$(document).ready(function(){ 
if ($("input['radio']).is(':disabled')) 
    { 
     $(this).attr('checked', false); 
    } 
else 
    { 
     $(this).attr('checked', true); 
    } 
});

Muchas gracias

+0

entrada [type = radio] en su lugar –

+1

** O **, @Haim, 'input: radio'. –

Respuesta

49

Si los botones se agrupan por su atributo de nombre, trata de:

$("input:radio[name=groupName][disabled=false]:first").attr('checked', true); 

Si ellos están agrupados por un contenedor principal, entonces:

$("#parentId input:radio[disabled=false]:first").attr('checked', true); 
+1

Si desea que se active el evento de cambio, haga '.click()' en su lugar – Yarin

0

Prueba esto:

$("input:radio:not(:disabled)").attr("checked", true); 

Para comprobar el primer botón de opción sólo en un grupo usted puede

$("parentelement input:radio:not(:disabled):first-child").attr("checked", true); 
+1

Creo que el OP significa "grupo" como en "todos los botones de radio que comparten el mismo nombre" –

+0

'first-child' no es correcto – sje397

8

La continuación hace lo que quiere:

$(document).ready(
    function(){ 
    $('input:radio:first-child').attr('checked',true); 
    } 
); 

demo en: JS Bin.

+0

Aunque, para ser justos, tanto @ Šime como @rahul proporcionan cordura sensible- cheques. –

+0

'first-child' no es correcto – sje397

+0

$ ('input: radio: first-child') selecciona el primer botón de opción de cualquier grupo de radio en su página. –

16
$("input:radio[name=groupX]:not(:disabled):first") 

Esto debe darle el primer botón de radio sin discapacidad de un grupo ...

3
<input type="radio" name="r1"><br> 
<input type="radio" name="r1"><br> 
<hr> 
<input type="radio" name="r2"><br> 
<input type="radio" name="r2"><br> 
<input type="radio" name="r2"><br> 

<script> 
$(function(){ 
    //removed duplicates form the following array 
    $(jQuery.unique(
     //create an array with the names of the groups 
     $('INPUT:radio') 
      .map(function(i,e){ 
       return $(e).attr('name') } 
      ).get() 
    )) 
    //interate the array (array with unique names of groups) 
    .each(function(i,e){ 
     //make the first radio-button of each group checked 
     $('INPUT:radio[name="'+e+'"]:visible:first') 
      .attr('checked','checked'); 
    }); 
}); 
</script> 

jsfiddle = http://jsfiddle.net/v4auT/

+0

Nice Solution (y) –

Cuestiones relacionadas