使用prevent default来接管空格键

时间:2009-06-02 15:20:36

标签: javascript jquery

我有一些这样的代码来接管空格键的功能:

    $(document).keypress(function (e) { 
        e.preventDefault();                            
        if (e.which == 32) {
            // func
        }
    }); 

不幸的是,这会破坏所有密钥的默认值。

此:

    $(document).keypress(function (e) { 
        if (e.which == 32) {
            e.preventDefault();
            // func
        }
    }); 

遗憾的是无效。

如何才能阻止空格键的默认?

感谢。

4 个答案:

答案 0 :(得分:2)

试试这个:

//e= e || window.event); you may need this statement to make sure IE doesn't keep the orginal event in motion
var code;  
if (e.keyCode) {
 code = e.keyCode;
} else if (e.which) {
 code = e.which;
 }
if (code == 32) {
 if (e.stopPropagation) {
 e.stopPropagation();
 e.preventDefault();
 }
 return false;
}

答案 1 :(得分:1)

对于上面的一些事情,比如使用$可能会让人感到困惑。所以我用javascript代码发布我的答案。将其添加到任何文件中以阻止空格键(或者您也可以添加其他操作)。

window.onkeydown = function (event) {
    if (event.keyCode === 32) {
        event.preventDefault();
    }
};

键码32是空格键。对于其他密钥代码,请查看此站点:

http://www.javascripter.net/faq/keycodes.htm

祝你好运

答案 2 :(得分:0)

为什么它无效?

也许您想使用switch()语句而不是if-then-else?

答案 3 :(得分:-1)

尝试

$(document).keydown(function(e){<br>
    if(e.which==32) e.preventDefault();<br>
});

我用它来阻止Esc键,对我来说效果很好。