onkeypress return false对空格键不起作用

时间:2010-06-07 09:47:56

标签: javascript keypress

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

有相同的解决方案吗?

2 个答案:

答案 0 :(得分:6)

确保您为keypress事件使用正确的ascii字符代码,并确保您正在检查您正在测试的浏览器的正确属性.IE使用event.keyCode,其他人使用{{ 1}}。以下代码适用于IE,Firefox和Chrome:

event.which

http://jsbin.com/ikowo4

答案 1 :(得分:1)

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

@A Bright Worker:你看过我提供的jsbin链接了吗?它有一个输入框,其中我使用的代码在IE,Firefox和Chrome中运行良好。除了空格字符外,它将允许输入任何字符。除此之外,我不确定我理解你的评论试图说什么。 - Andy E 2010年6月7日在10:07

@Andy:实际上输入的类型是网格中的过滤器按钮,并且已经有一些onclick事件,所以如果我使用onkeypress,事件仍会被触发。但如果我使用onkeydown onclick事件不会。谢谢你的例子..我修改了一下,你可以看看。 jsbin.com/ikowo4/2 - 一名聪明的工人2010年6月7日10:38

@A Bright Worker:啊,现在让它更清晰一点。查看jsbin.com/ikowo4/4,打开开发人员工具(Firebug,IE开发工具,Chrome开发工具等)控制台。每个事件都返回false,因此链中的下一个事件不应该触发。这在Chrome和IE中都是如此,它只显示onkeydown事件触发,而Firefox显示所有三个事件触发。我不确定这是否对您有所帮助,但看起来您必须在接近答案之前确切了解每个浏览器的不同之处。对不起,我忍不住了,祝你好运。 - 安迪E 2010年6月7日11:11

谢谢Andy,Infact我的应用程序支持IE,所以我目前没有问题。 - 一个聪明的工人2010年6月10日在7:01