jQuery - 使用keydown(un)检查复选框的问题

时间:2013-10-29 14:08:43

标签: jquery html

我有一个问题,(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。

感谢每一个想法如何防止这种不良行为。

3 个答案:

答案 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;

DEMO

$(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);
        }
    }
});