Javascript onkeypress return false不适用于空格键

Javascript onkeypress return false不适用于空格键,javascript,keypress,Javascript,Keypress,我在一个按钮上编写了一个javascript,用于阻止该控件上的按键或按键事件。它可以很好地使用Enter键,但当我按空格键时,事件会被触发 是否有相同的解决方案?确保您对按键事件使用了正确的ascii字符代码,并确保您正在为正在测试的浏览器检查正确的属性。IE使用event.keyCode,其他使用event.which。在IE、Firefox和Chrome中,以下代码对我来说很好: document.getElementById("hello").onkeypress = function

我在一个按钮上编写了一个javascript,用于阻止该控件上的按键或按键事件。它可以很好地使用Enter键,但当我按空格键时,事件会被触发


是否有相同的解决方案?

确保您对按键事件使用了正确的ascii字符代码,并确保您正在为正在测试的浏览器检查正确的属性。IE使用
event.keyCode
,其他使用
event.which
。在IE、Firefox和Chrome中,以下代码对我来说很好:

document.getElementById("hello").onkeypress = function (evt)
{
    var k = evt ? evt.which : window.event.keyCode;
    if (k == 32)
        return false;
}​

d
事实上,如果你比较keycode 32,它会有一点不同。我可以通过.keydown和keycode=32来解决这个问题聪明的工人6月7日10点04分


@聪明的工人:你看过我提供的jsbin链接了吗?它有一个输入框,里面有我在IE、Firefox和Chrome中使用的代码。它将允许输入除空格字符以外的任何字符。除此之外,我不确定我是否理解你的评论想说什么Andy E Jun 7'10在10:07


@安迪:实际上,输入的类型是网格中的一个过滤按钮,它已经有一些onclick事件,所以如果我使用onkeypress,事件仍然会被触发。但是如果我使用onkeydown,onclick事件就不会。谢谢你的例子。。我修改了一点,你可以看看。jsbin.com/ikowo4/2–一个聪明的工人6月7日10点38分


@聪明的工人:啊,这让事情变得更清楚了。查看jsbin.com/ikowo4/4,打开您的开发工具(Firebug、IE开发工具、Chrome开发工具等)控制台。每个事件都返回false,因此链中的下一个事件不应激发。这在Chrome和IE中是正确的,它们只显示onkeydown事件触发,而Firefox显示所有三个事件触发。我不确定这是否对你有帮助,但在你更接近你的答案之前,你必须准确地找出每个浏览器的区别。对不起,我不能再帮你了,祝你好运Andy E Jun 7'10 11:11


谢谢Andy,事实上我的应用程序支持IE,所以我目前没有问题聪明的工人6月10日7点01分

事实上,如果你比较一下keycode 32,就会发现有点不同。我可以通过.keydown和keycode=32…@一个聪明的工人:你看过我提供的jsbin链接了吗?它有一个输入框,里面有我在IE、Firefox和Chrome中使用的代码。它将允许输入除空格字符以外的任何字符。除此之外,我不确定我是否理解你的评论。实际上,输入的类型是网格中的一个过滤器按钮,并且已经有一些onclick事件,因此如果我使用onkeypress,事件仍然会被触发。但是如果我使用onkeydown,onclick事件就不会。谢谢你的例子。。我修改了一点,你可以看看@聪明的工人:啊,这让事情变得更清楚了。看看,您的开发工具(Firebug、IE开发工具、Chrome开发工具等)控制台处于打开状态。每个事件都有
返回false
,因此链中的下一个事件不应触发。这在Chrome和IE中是正确的,它们只显示
onkeydown
事件触发,而Firefox显示所有三个事件触发。我不确定这是否对你有帮助,但在你更接近你的答案之前,你必须准确地找出每个浏览器的区别。对不起,我无法进一步帮助,祝你好运。谢谢安迪,事实上我的应用程序支持IE,所以我目前没有问题。