我有一个问题,(un)使用keydown检查复选框并用鼠标点击将其组合。我有一个id为“check”的复选框,并且是我的jQuery代码的一部分,它通过点击空格键来检查和取消选中我的复选框:
$(document).keydown(function (e) {
if (e.keyCode == 32) {
if ($("#check").is(":checked")) {
$("#check").prop("checked", false);
}
else {
$("#check").prop("checked", true);
}
}
});
加载文档时,一切都很好用。但是,当我通过经典鼠标单击选中或取消选中复选框时,我无法使用空格键进行(取消)检查。每次我点击空格键(在我点击复选框后)复选框都会检查并快速取消选中。例如,当它被检查并且处于这种破碎状态时,击中空格键只会导致再次检查checbox。
感谢每一个想法如何防止这种不良行为。
答案 0 :(得分:1)
使用.removeAttr("checked")
取消选中并使用.attr("checked","checked")
来检查复选框
希望这会起作用
答案 1 :(得分:1)
您的问题与此jQuery difference between change and click event of checkbox类似。您需要使用单击处理程序而不是keydown才能捕获键盘事件
答案 2 :(得分:1)
您可以使用event.stopImmediatePropagation
保持其余的处理程序不被执行并阻止 冒泡DOM树的事件。
同时添加此行以支持crossbrowser
event = e || window.event;
$(document).keydown(function (e) {
event = e || window.event;
event.stopImmediatePropagation();
if (event.keyCode == 32) {
if ($("#check").is(":checked")) {
$("#check").prop("checked", false);
}
else {
$("#check").prop("checked", true);
}
}
});