Я только что проверил следующее, и оно работало безупречно:
var view = Backbone.View.extend({
// ... snip ...
events: {
'keyup :input': 'logKey'
,'keypress :input': 'logKey'
}
,logKey: function(e) {
console.log(e.type, e.keyCode);
}
});
Я бы вернулся и проверил ваш код.Все события в Backbone определяются как делегаты, прикрепленные к элементу viewInstance.el
.Чтобы отменить привязку событий, вызовите viewInstance.remove()
, который вызывает $(viewInstance.el).remove()
под прикрытием и очищает все делегированные события.
Также обратите внимание, что в некоторых браузерах (я полагаю, Firefox) существует известная проблема, что некоторые ключи (как клавиши со стрелками) не всплывают и не будут работать правильно с делегированными keypress
событиями.Если вы ловите специальные ключи, вам, вероятно, лучше использовать keyup
и keydown
.