2016-04-26 176 views
0

我有一个checkbox和3 radio buttons,我想如果有复选框被选中选择radio buttons之一,并拥有其中的任何未选中的,如果checkbox是听之任之。复选框来控制单选按钮

我的解决方案在第一次运行时工作,但不会在第一次单击后选择单选按钮。

$('#checkbox-h-2g').click(function() { 
    if ($('#checkbox-h-2g').is(":checked")) { 
     $('#r1').attr('checked', true); 
    }if (!$('#checkbox-h-2g').is(":checked")) { 
     $('#r1 , #r2, #r3').attr('checked', false); 
    } 
}); 
+0

在你的第二个'if'你应该通过每个电台使用的每个循环,使之未核对改善。同样应该去检查变体。 – skywalker

回答

1

使用.prop(),而不是.attr()设置属性,而且你的代码可以作为

$('#checkbox-h-2g').change(function() { 
    if (this.checked) { 
     $('#r1').prop('checked', true); 
    }else{ 
     $('#r1 , #r2, #r3').prop('checked', false); 
    } 
}); 
+1

因为您可以使用键盘来检查复选框,所以最好使用更改事件。 – jcubic

+0

你也可以正常使用键盘来点击(空格键)变化事件只会在模糊时触发 – mplungjan

+0

@jcubic,当checkbox的状态改变时,许多浏览器调用'click'处理器。[Ref](https: //www.w3.org/TR/WCAG20-TECHS/SCR35) – Rayon