У меня проблема с событиями JQuery в одном из моих объектов Backbone.Marionette. Я определил некоторые события нажатия и клавиатуры. Но некоторые из них не работают. Например, я хочу, чтобы функция fetch вызывалась каждый раз, когда запускается событие keyup.событие keyup не срабатывает - магистраль
Так вот код:
return Backbone.Marionette.ItemView.extend({
tagName: 'div',
template: Template,
events:{
'click .yes': 'yes',
'click .no': 'no',
'keyup #citySearch': 'fetch'
},
yes : function() {
this.close();
},
no : function() {
this.close();
},
initialize: function(){
this.collection = new AreaCollection();
this.collection.on('sync', this.onShow, this);
this.sourceArr = [];
},
onShow: function() {
var that = this;
$('#citySearch').typeahead({
source: that.sourceArr
});
},
fetch: function(ev) {
var that = this;
that.collection.fetch({
data : {
query : $(ev.currentTarget).val(),
type : 'cities'
},
success: function(response) {
for (var i = 0; i < response.length; i++) {
that.sourceArr.push(response.models[i].get('name'));
}
}
});
}
});
Но keyup-Event никогда не срабатывает. Я также попробовал его с «change» -event, который также не работает. Когда я использую «keydown» или «keypress», тогда все нормально, и функция fetch вызывается правильно.
Я также попытался связать событие этого входного поля вручную в инициализации-функции с
$('input#citySearch').bind('keyup',function() {
console.log('keyup');
});
Но это тоже не работает. Он работает только в том случае, если я привязываю событие к полю ввода в моем файле подчёркивания-шаблона. Но это не могло быть решением.
Есть ли у кого-нибудь идеи, в чем проблема?
Возможно ли, что обработчик, прикрепленный к полю через 'typeahead()', захватывает 'keyup' и предотвращает его распространение? – ebohlman
нет, что тоже не работает, я удалил инициализацию поля typeahead и снова попытался активировать keyup-event – crebuh