3

我想为除文本框和文本区域之外的任何元素禁用退格键(键码 8)。

这是我尝试但没有成功的方法:

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

...

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

..

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

这个想法是为了避免用户在没有集中在任何文本框或文本区域时意外地按下退格键。

有什么想法吗?

4

2 回答 2

6

您还希望禁用只读的文本区域或文本框。

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

我假设您试图阻止返回功能。

编辑:

您也可以将侦听器附加到主体上。EDIT2:您也需要阻止对复选框的操作(这是输入)

$(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;
                    }
                }
});
于 2012-06-29T17:20:02.177 回答
2

The easiest solution (which covers all the special cases) is:

$(document).keydown(function(e) {
    if (e.which == 8 && !$(':focus').length) {
        e.preventDefault();
    }
});
于 2013-03-14T13:10:17.627 回答