Mam problem z wydarzeniami JQuery w jednym z widoków Backbone.Marionette. Zdefiniowałem niektóre zdarzenia związane z kliknięciem i klawiaturą. Ale niektóre z nich nie działają. Na przykład chcę, aby funkcja pobierania była wywoływana za każdym razem, gdy wyzwalane jest zdarzenie keyup.Zdarzenie keyup nie jest odpalane - kręgosłup
Tak oto kod:
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'));
}
}
});
}
});
Ale zdarzenie typu keyup nie zostanie nigdy wyrzucone. Próbowałem też z "zmianą", która również nie działa. Kiedy używam "keydown" lub "keypress" zamiast tego wszystko jest w porządku, a funkcja pobierania jest wywoływana poprawnie.
Próbowałem też powiązać zdarzenie do tego wejścia-pole ręcznie w initialize-funkcji z
$('input#citySearch').bind('keyup',function() {
console.log('keyup');
});
Ale nie jest to też działa. Działa tylko wtedy, gdy wiążę zdarzenie z polem wejściowym w moim pliku podkreślenia-szablonu. Ale to nie może być rozwiązanie.
Czy ktoś ma pojęcie, jaki może być problem?
Czy jest możliwe, że program obsługi dołączony do pola za pośrednictwem 'typeahead()' chwyta 'keyup' i uniemożliwia jego propagowanie? – ebohlman
nie, który również nie działa, usunąłem inicjalizację pola typu głowica i ponownie wypróbowałem zdarzenie keyup – crebuh