Да, это будет. Независимо от того, добавлен ли обработчик событий в html (например, в вашем примере) или в файл js. И независимо от порядка вы регистрируете обработчики событий в файлах javascript, потому что, как объясняется Rob & Vinny, событие «пузыри» от элемента. Событие keypress начинается с ввода элемента dom, затем пузырьки его родителя и родителя его родителя и так далее. Поэтому обработчики событий будут запускаться в том же порядке.
Все, что вам нужно знать? Если у вас есть конкретный прецедент для этих двух отдельных обработчиков, вы можете объяснить, что это такое, и я могу попытаться запрограммировать решение, потому что в вашем примере я не вижу, как может быть полезно иметь 2 действия для одного и того же события на тот же элемент.
EDIT: тогда почему бы не использовать глобальный прослушиватель документа с проверкой, является ли элемент фокуса входным?
Example on JSFiddle:
document.addEventListener('keypress', function(e){
var key = String.fromCharCode(e.which),
targetElt = e.target;
if (key === 'a'){
console.log('-- Action when "a" is pressed')
if (targetElt.nodeName === 'INPUT') {
console.log('-- Action when "a" is pressed and the focus is on an input');
}
}
}, false);
Если нажать «а» только первый console.log
называется, если нажать «а», когда input
ориентирован, как console.log
называются.
Если у вас есть несколько ключей, я бы рекомендовал использовать switch
заявление вместо того, if
/else if
/else
Благодаря
Это хорошее объяснение пропускании событий и то, что вы можете ожидать/контроль: HTTP : //www.quirksmode.org/js/events_order.html также читайте это: http://stackoverflow.com/questions/4616694/what-is-event-bubbling-and-capturing –