我有一个非常简单的问题-我在想-但我自己无法解决。

我有两个复选框:
一个值为Yes,另一个值为No。

我需要某种脚本来帮助我在选中另一个脚本时取消选中它。因此,如果我选中复选框。 1-复选框号。 2自动被取消选中-反之亦然。必须始终选中其中一个复选框,并且只有一个。不,在这种情况下,我无法使用单选按钮。

如果可以在jQuery中完成,那就太好了-但任何帮助都可以:)

提前致谢

罗伯特

最佳答案

我想到的最简单的方法是:

$('input:checkbox').change(
    function(){
        var group = this.name;
        $(this).siblings('input:checkbox[name="'+ group + '"][checked]').removeProp('checked');
    });


JS Fiddle demo

但是有一些警告,以上使用removeProp(),仅限于jQuery 1.6(及更高版本)。在1.6之前的版本中,应该可以用removeAttr('checked')代替。

但是,请重新考虑使用<input type="radio" />元素,这正是它们旨在处理和使用的元素。


编辑来自Robert的以下评论(在下面的评论中):


我按计划进行了此操作,但是...在我的表单中,我还有另一组复选框,尽管名称完全不同,但它们也受到了限制。但是我需要用户能够选择多个这些复选框中的一个。该脚本似乎会影响所有复选框组。我实际上认为,通过输入name =“'+ group +'”可以将功能限制于那些以“ group”开头的复选框。但这似乎并非如此。


分配change事件处理程序的选择器是$('input:checkbox'),它选择/应用于页面上的所有复选框。

要将其仅应用于特定组中的那些复选框,可以使用:

$('input:checkbox[name="checkboxGroupName"]').change(
    function(){
        $(this).siblings().removeProp('checked');
    });


参考文献:


:checkbox
change()
siblings()
attribute-equals selector
removeProp()

09-30 16:10
查看更多