0

我的页面中有一组复选框,如果他已经选中了两个框,我想阻止用户选中一个复选框。不知何故,我解决了我的问题,但我对我目前的解决方案不满意,因为我认为这不是做同样事情的正确方法。所以我来这里是为了更好的选择,我当前的代码如下

HTML

<input type="checkbox" class="chkTest" />
<input type="checkbox" class="chkTest" />
<input type="checkbox" class="chkTest" />
<input type="checkbox" class="chkTest" />
<input type="checkbox" class="chkTest" />
<input type="checkbox" class="chkTest" />
<input type="checkbox" class="chkTest" />
<input type="checkbox" class="chkTest" />
<input type="checkbox" class="chkTest" />

脚本

    $(function () {
        var count = 0;
        $(".chkTest").change(function () {

            if ($(".chkTest").is(":checked")) {
                count = count + 1;
            }
            if (count > 2) {
                $(this).attr("checked", false);
                alert("only two");
            }

        });
    });

有什么想法吗???

4

4 回答 4

3

利用:

$(".chkTest").change(function () {
    if ($(".chkTest:checked").length > 2) {
        $(this).prop("checked", false);
    }
});

jsFiddle 示例

于 2013-10-31T15:58:58.230 回答
2

当您选择了 2 个选项时,这将禁用所有未选中的框,并在您选中零个或一个选项时启用所有这些框。

$(".chkTest").change(function () {
    if ($(".chkTest:checked").length < 2) {
        $(".chkTest").prop("disabled", false);
    } else {
       $(".chkTest:not(:checked)").prop("disabled", true); 
    }
});
于 2013-10-31T16:04:50.733 回答
1

尝试

$(function () {
    var $checks = $(".chkTest").change(function () {
        if ($checks.filter(':checked').length > 2) {
            this.checked = false;
            alert("only two");
        }
    });
});

演示:小提琴

于 2013-10-31T15:58:48.667 回答
1

这应该工作:

 $(function () {
    var count  = $(".chkTest:checkbox:checked").length;

    $(".chkTest").click(function (e) {
        if (count > 2) {
            alert("only two");
            e.preventDefault();
            return false;
        }
    });
});
于 2013-10-31T16:01:47.083 回答