如何使用jQuery禁用<body> EXCEPT输入和textareas中的任何内容的退格键?

Cha*_*rin 3 jquery keypress keydown

我想为除textboxes和textareas之外的任何元素禁用退格键(keycode 8).

这是我尝试的没有成功:

$(":not(input, textarea)").keydown(function(event) {
    if (event.keyCode == 8) {
        event.preventDefault();
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

...

$("*:not(input, textarea)").keydown(function(event) {
    if (event.keyCode == 8) {
        event.preventDefault();
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

..

$("body").not("input,textarea").keydown(function(event) {
    if (event.keyCode == 8) {
        event.preventDefault();
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

这个想法是避免用户在没有聚焦在任何文本框或文本区域时意外地击中退格键.

有什么想法吗?

小智 6

您还要禁用只读的文本区域或文本框.

如果文本区域或文本框是只读的并且具有焦点,那么点击退格键也会导致您离开页面.这就是为什么你也应该检查readonly.

我假设你试图阻止后退功能.

编辑:

您也可以将侦听器附加到正文.EDIT2:你也需要阻止对checbox的操作(这是输入)

$(document).keydown(function (e) {
                var element = e.target.nodeName.toLowerCase();
                if ((element != 'input' && element != 'textarea') || $(e.target).attr("readonly") || (e.target.getAttribute("type") ==="checkbox")) {
                    if (e.keyCode === 8) {
                        return false;
                    }
                }
});
Run Code Online (Sandbox Code Playgroud)