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

时间:2012-06-29 17:15:36

标签: jquery keypress keydown

我想为除textboxes和textareas之外的任何元素禁用退格键(keycode 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;
    }
});

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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;
                    }
                }
});

答案 1 :(得分:2)

最简单的解决方案(涵盖所有特殊情况)是:

$(document).keydown(function(e) {
    if (e.which == 8 && !$(':focus').length) {
        e.preventDefault();
    }
});
相关问题