javascript关键事件的问题

时间:2009-06-17 17:13:06

标签: javascript events

我想响应用户点击 Enter 键,我可以这样做,但是当用户点击 Enter 键时我不想响应该事件重点是地址栏。当焦点在地址栏中时,我无法弄清楚如何阻止我的键事件处理程序执行。

注意:页面刷新,但我的处理程序首先被调用。

请不要告诉我当焦点在地址栏时不要动作,我知道,告诉我如何检查焦点不在地址栏中,谢谢

好的,我知道了,它的关键事件,而不是keydown,这导致了这一点,感谢您的帮助

4 个答案:

答案 0 :(得分:3)

如果用户的焦点在地址栏上并且用户点击 Enter 键,您将无法阻止它,并且您的事件处理程序甚至不应该运行(尽管页面将重新加载)。

答案 1 :(得分:1)

在原型中你可以将keylisteners附加到文档

Event.observe(document, 'keypress', function(event){
   if event.keycode == Event.KEY_RETURN { 
       //DO STUFF
   }
});

所以只关注文件中发生的按键

答案 2 :(得分:0)

您无法阻止事件处理程序触发。您可以做的是检查焦点的位置,并且只在您需要时触发,例如,当焦点在地址栏上时。

答案 3 :(得分:0)

在Firefox和Chrome上(目前我必须测试的只有两个),当键盘焦点位于位置栏并且 Enter 键时,keydown和keypress事件都不会触发按下。当页面再次加载时,keyup事件会触发,因为我没有足够快地释放它。

所以我想你可以坚持使用keydown和/或keypress事件,或者跟踪keydown事件并忽略任何没有keydown事件的keyup事件。