我有一个包含复选框列表的页面,当选中复选框时,我正在更新在p标签旁边选中的复选框的数量。这一切都有效。
我遇到的问题是,当用户选择5个以上的复选框时,我想使用Jquery取消选中它。
这就是我到目前为止,第一个if if的工作,但if doe的第一部分
$("input").click(function () {
if ($("input:checked").size() > 5) {
this.attr('checked', false) // Unchecks it
}
else {
$("#numberOfSelectedOptions").html("Selected: " + $("input:checked").size());
}
});
有什么想法吗?
答案 0 :(得分:4)
首先,您应该在处理复选框时使用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);
}
});
注意我将小提琴限制为2个选项,以便更容易测试。
答案 1 :(得分:1)
您需要$(this).prop('checked', false);
答案 2 :(得分:1)
你应该说
$(this).attr('checked', false)
而不是
this.attr('checked', false)
答案 3 :(得分:0)
您需要$(this).prop('checked', false);
同样this
是一个javascript对象,如果你想使用jquery,你应该更喜欢$(this)
。