JQuery:如何选择除输入和textarea之外的所有元素? (禁用keydown事件)

时间:2010-04-14 18:25:41

标签: jquery jquery-selectors

我正在尝试在我的jQuery应用程序中禁用退格键,这样它就不会导致浏览器返回页面。但是,如果输入或textarea元素被聚焦,我不想禁用它,因为我希望退格在那里正常工作。

所以,我想选择任何不是输入或文本区域的东西。

这是代码。问题是它会触发每个元素,甚至是输入和文本。

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

我不明白为什么:not()函数不起作用。有没有更好的方法可以做到这一点?

请注意,如果我删除:not()函数,它可以正常工作。也就是说,它只会触发input和textarea元素。

编辑:根据接受的答案,这里是有效的代码。我相信有更好的方法可以做到这一点。

    $(document).keydown(function(e) {
    var element = e.target.nodeName.toLowerCase();
    if (element != 'input' && element != 'textarea') {
        if (e.keyCode === 8) {
            return false;
        }
    }
});

2 个答案:

答案 0 :(得分:6)

您的问题是keydown事件从<input><textarea>元素冒泡到包含它的普通元素,从该元素触发事件。

您需要检查e.target

答案 1 :(得分:3)

试试这段代码:

$("*:not(input)")