【发布时间】:2010-06-07 09:47:55
【问题描述】:
我在一个按钮上编写了一个 javascript,它阻止了该控件上的 keypress 或 keydown 事件。使用 Enter 之类的键可以正常工作,但是当我按下空格键时,它会触发事件。
是否有相同的解决方案?
【问题讨论】:
标签: javascript keypress
我在一个按钮上编写了一个 javascript,它阻止了该控件上的 keypress 或 keydown 事件。使用 Enter 之类的键可以正常工作,但是当我按下空格键时,它会触发事件。
是否有相同的解决方案?
【问题讨论】:
标签: javascript keypress
确保您为按键事件使用正确的 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;
}
【讨论】:
return false,因此链中的下一个事件不应触发。这在 Chrome 和 IE 中是正确的,它们只显示onkeydown 事件触发,而 Firefox 显示所有三个事件触发。我不确定这是否对您有帮助,但看起来您必须先找出每个浏览器的确切差异,然后才能更接近您的答案。抱歉,我帮不上忙,祝你好运。
d 实际上,如果您比较 keycode 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
谢谢安迪,事实上我的应用程序支持 IE,所以我目前没有问题。 – 一个聪明的工人 2010 年 6 月 10 日 7:01
【讨论】: