使用 Jquery 取消选中复选框

Uncheck a Checkbox using Jquery

我有一个包含复选框列表的页面,当一个复选框被选中时,我正在更新 p 标签中选中的复选框的数量。一切正常。

我遇到的问题是当用户选择超过 5 个复选框时我想使用 Jquery 取消选择它。

这是我目前所拥有的,第一个 if else 有效,但 if doe 的第一部分

 $("input").click(function () {

        if ($("input:checked").size() > 5) {
            this.attr('checked', false) // Unchecks it
        }
        else {
            $("#numberOfSelectedOptions").html("Selected: " + $("input:checked").size());
        }

    });

有什么想法吗?

你需要这个$(this).prop('checked', false);

你应该说

$(this).attr('checked', false)

而不是

this.attr('checked', false)

首先,您应该在处理复选框时使用 change 事件,以便它适合仅通过键盘导航的用户。其次,如果选中的复选框数量已经超过 5 个,您可以使用 preventDefault() 停止选中当前复选框。试试这个:

$("input").change(function (e) {
    var $inputs = $('input:checked');
    if ($inputs.length > 5 && this.checked) {
        this.checked = false;
        e.preventDefault();
    } else {
        $("#numberOfSelectedOptions").html("Selected: " + $inputs.length);
    }
});

Example fiddle

请注意,我将 fiddle 限制为 2 个选择,以便更容易测试。

你需要这个$(this).prop('checked', false);

另外 this 是一个 javascript 对象,如果你想使用 jquery 你应该更喜欢 $(this).