0

我在(取消)使用 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);
        }
    }
});

加载文档时一切正常。但是,当我仅通过经典鼠标单击选中或取消选中复选框时,我不能再使用空格键进行(取消)检查。每次我点击空格键(在我已经点击复选框之后)复选框都会快速检查和取消选中。例如,当它被选中并且处于这种损坏状态时,按空格键只会导致再次选中复选框。

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

4

3 回答 3

1

您可以使用event.stopImmediatePropagation

阻止其余的处理程序被执行,并防止事件在 DOM 树中冒泡。

还要添加此行以获得跨浏览器支持

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);
        }
    }
});
于 2013-10-29T14:16:24.303 回答
1

用于.removeAttr("checked")取消选中并.attr("checked","checked")用于选中复选框希望这会起作用

于 2013-10-29T14:13:11.567 回答
1

您的问题类似于复选框 change 和 click 事件之间的 jQuery 区别。您需要使用单击处理程序,而不是 keydown 才能捕获键盘事件

于 2013-10-29T14:13:37.340 回答