проблемы с ключевыми событиями JavaScript - PullRequest
0 голосов
/ 17 июня 2009

Я хочу ответить пользователю, нажав клавишу Enter , что я могу сделать, однако я не хочу отвечать на событие, когда пользователь нажимает клавишу Enter и основное внимание уделяется адресной строке. Я не могу понять, как предотвратить выполнение моего ключевого обработчика событий, когда фокус находится в адресной строке.

Примечание: страница обновляется, но мой обработчик вызывается первым.

Пожалуйста, не говорите мне не выполнять действия, когда фокус находится в адресной строке, я знаю, скажите мне, как проверить, что фокус не находится в адресной строке, спасибо

ОК, я понял, это событие keyup, а не keydown, это и вызывает, спасибо за помощь

Ответы [ 4 ]

3 голосов
/ 17 июня 2009

Если пользователь фокусируется на адресной строке и пользователь нажимает клавишу Enter , вы не сможете предотвратить это, и ваш обработчик событий даже не должен работать (хотя страница перезагрузится) .

1 голос
/ 17 июня 2009

в прототипе вы можете прикрепить списки ключей к документу

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

, поэтому только наблюдаем за нажатиями клавиш, которые происходят с документом

0 голосов
/ 17 июня 2009

В Firefox и Chrome (единственные две, которые я должен проверить в данный момент), ни события нажатия клавиш, ни нажатия клавиш не запускаются, когда клавиатура находится в строке адреса и нажата клавиша Ввод . , Когда страница загружается снова, происходит событие keyup, потому что я недостаточно быстр, чтобы освободить его.

Так что я полагаю, что вы можете придерживаться событий нажатия клавиш и / или нажатия клавиш, или отслеживать события нажатия клавиш и игнорировать любые события нажатия клавиш, которым не предшествует нажатие клавиши.

0 голосов
/ 17 июня 2009

Вы не можете предотвратить запуск обработчика событий. Что вы можете сделать, так это проверить, где находится фокус, и срабатывать только тогда, когда вы этого хотите, например, не когда фокус на адресной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...