仅当在输入字段中未按下键时才绑定键(用于带退格的页面转换)?

时间:2010-09-19 21:33:56

标签: jquery jquery-selectors

我不知道为什么,但我已经开始工作,但今天它已停止工作了。基本代码是:

$(document).bind("keydown", function(e){
    if (e.keyCode) code = e.keyCode;         // für alle Browser
    else if (e.which) code = e.which;         // für ie
    if(code==8) {
    $("#outer-frame").fadeOut(400, function (){ //content fade-out
        history.back(-1); //gehe einen Schritt in der Browser-History zurück
});
    return false; // Browser bricht ab
}
});

我也有一个if语句,不再知道它,它突然停止工作。 我希望退格键绑定到keydown并执行页面转换效果。没问题,因为如果用户点击输入字段中的退格键,我想要阻止整个事件被调用,因为他将被重定向到他历史记录的最后一页。

PLS帮助我!如果有些东西停止工作会很烦人。

我使用了来自css的:焦点选择器,如if($(“input:focus”)...

只想添加浏览器开关不是来自我,绑定事件和if(code == 8)是我的编码,淡入淡出和历史也没有什么独特的你会发现很多例子所以我在在我研究不同的浏览器行为时(我发现了一些类似的代码,但我认为这是jQuery ...而jQuery很棒!)。

我对Ken Egozi和SimpleCoder提供的解决方案非常满意,非常感谢你们两位的帮助!

2 个答案:

答案 0 :(得分:1)

如果在textarea,文本框或密码框中按下键,则需要继续(返回true)。

添加

if ($(e.target).is("textarea, input[type=text], input[type=password]")) return true;

到您的处理程序,在if (code==8)

之前

答案 1 :(得分:0)

我会这样做:

$(document).bind("keydown", function(e) {
    if ((e.target.nodeName.toLowerCase() != "input" && e.target.nodeName.toLowerCase() != "textarea") && e.which == 8) {
        $("#outer-frame").fadeOut(400, function() {
            history.back(-1);
        });
        return false; // unterbricht die Verarbeitung durch den Browser
    }
});

另外,您知道,jQuery自动规范化e.which属性,所以:

if (e.keyCode)
    code = e.keyCode; // für alle Browser
else if (e.which)
    code = e.which; // für ie
if (code == 8) {

可以写成

if (e.which == 8) {