选中复选框 2 时取消选中复选框 1

发布于 2024-11-16 11:38:53 字数 254 浏览 4 评论 0原文

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

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

我需要某种脚本来帮助我在选中另一个时取消选中一个。所以如果我选中复选框否。 1 - 复选框编号2 自动取消选中 - 反之亦然。必须始终选中其中一个复选框(而且只有一个)。不 - 在这种情况下我不能使用单选按钮。

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

提前感谢

罗伯特

I have a pretty simple question - I'm thinking - but I cannot solve it myself.

I have two checkboxes:
One with value Yes, the other with value No.

I need a script of some sort to help me uncheck one when the other is checked. So if I check checkbox no. 1 - checkbox no. 2 automatically gets unchecked - and vice versa. One of the checkboxes - and only one - must always be checked. And no - i cannot use radio buttons in this case.

Would be great if it could be done i jQuery - but any help would do :)

Thanks in advance

Robert

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

软糖 2024-11-23 11:38:53

我能想到的最简单的方法是使用以下内容:

$('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') 代替。

不过,请重新考虑使用 元素,这正是它们旨在处理的内容并与.


Edited following comment from Robert (in comments, below):

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

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

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

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

参考:

The easiest way that I could think of to do this is with the following:

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

JS Fiddle demo.

However there are some caveats, the above uses removeProp(), which is limited to jQuery 1.6 (and above, presumably). Prior to 1.6, it should be possible to substitute removeAttr('checked') instead.

Please, though, reconsider using <input type="radio" /> elements, this is precisely what they're designed to handle and work with.


Edited following comment from Robert (in comments, below):

I got this working as planned, BUT...in my form I have another group of checkboxes, and they get the restriction as well, although they have completely different names. But I need the user to be able to pick more than one of these checkboxes. It seems as though the script affects all checkbox groups. I actually thought that by putting in name="'+ group +'" one would limit the function to those checkboxes with a name starting with the word "group". But that seems not to be the case.

The selector that assigns the change event-handler is $('input:checkbox') which selects/applies to all checkboxes on the page.

To apply it to only those checkboxes in a particular group, you could use:

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

References:

冷弦 2024-11-23 11:38:53
$("#checkbox1").bind('click', function(){ $("#checkbox2").removeAttr('checked'); });
$("#checkbox2").bind('click', function(){ $("#checkbox1").removeAttr('checked'); });
$("#checkbox1").bind('click', function(){ $("#checkbox2").removeAttr('checked'); });
$("#checkbox2").bind('click', function(){ $("#checkbox1").removeAttr('checked'); });
浮云落日 2024-11-23 11:38:53
    $('#checkbox_1').change(function() {

        if ($(this).is(':checked')) {
            $('#checkbox_2').prop('checked', false);
        }
        else {
            $('#checkbox_1').prop('checked', false);
            $('#checkbox_2').prop('checked', true);
        }
    });

    $('#checkbox_2').change(function() {

        if ($(this).is(':checked')) {
            $('#checkbox_1').prop('checked', false);
        }
        else {
            $('#checkbox_2').prop('checked', false);
            $('#checkbox_1').prop('checked', true);
        }
    });

编辑:现在应该可以了:-)

    $('#checkbox_1').change(function() {

        if ($(this).is(':checked')) {
            $('#checkbox_2').prop('checked', false);
        }
        else {
            $('#checkbox_1').prop('checked', false);
            $('#checkbox_2').prop('checked', true);
        }
    });

    $('#checkbox_2').change(function() {

        if ($(this).is(':checked')) {
            $('#checkbox_1').prop('checked', false);
        }
        else {
            $('#checkbox_2').prop('checked', false);
            $('#checkbox_1').prop('checked', true);
        }
    });

Edit: That should work now :-)

对你的占有欲 2024-11-23 11:38:53
function ChkBoxClicked() {
    $("#chkBoxList_0").bind('click', function () { $("#chkBoxList_1").removeAttr('checked'); });
    $("#chkBoxList_1").bind('click', function () { $("#chkBoxList_0").removeAttr('checked'); }); 

    if (($('#chkBoxList_0').is(':checked')) || ($('#chkBoxList_1').is(':checked'))) {
        if ($('#chkBoxList_0').is(':checked')) { alert('chkBoxList_0'); return false; }
        if ($('#chkBoxList_1').is(':checked')) { alert('chkBoxList_1'); return false; }
    } else {
        alert('non of the chkBoxList'); return false;
    }
}

我就是这样做的

function ChkBoxClicked() {
    $("#chkBoxList_0").bind('click', function () { $("#chkBoxList_1").removeAttr('checked'); });
    $("#chkBoxList_1").bind('click', function () { $("#chkBoxList_0").removeAttr('checked'); }); 

    if (($('#chkBoxList_0').is(':checked')) || ($('#chkBoxList_1').is(':checked'))) {
        if ($('#chkBoxList_0').is(':checked')) { alert('chkBoxList_0'); return false; }
        if ($('#chkBoxList_1').is(':checked')) { alert('chkBoxList_1'); return false; }
    } else {
        alert('non of the chkBoxList'); return false;
    }
}

This is how I did it

二手情话 2024-11-23 11:38:53
$( document ).ready(function() {
    $( ".checkbox1" ).click(function(event) {
    $(this).parents('tr').children('td').children('.todos').prop('checked', false); 
    });
    $( ".checkbox2" ).click(function(event) {
        $(this).parents('tr').children('td').children('.checkbox1').prop('checked', false); 
    });

这基本上表明,当选中 checkbox1 且用户尝试选中 checkbox2 时,checkbox1 将被取消选中。

$( document ).ready(function() {
    $( ".checkbox1" ).click(function(event) {
    $(this).parents('tr').children('td').children('.todos').prop('checked', false); 
    });
    $( ".checkbox2" ).click(function(event) {
        $(this).parents('tr').children('td').children('.checkbox1').prop('checked', false); 
    });

This basically states that when checkbox1 is checked, and the user attempts to check checkbox2, checkbox1 will be unchecked.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文