使用prevent default来接管空格键

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

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

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

这个:

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

遗憾的是无效。

我怎样才能防止只有空格键的默认?

谢谢。

试试这个:

 //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; } 

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

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

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

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

祝好运

为什么它无效?

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

尝试

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

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