Ho un problema con gli eventi JQuery in una delle mie viste Backbone.Marionette. Ho definito alcuni eventi relativi a clic e tastiera. Ma alcuni di loro non funzionano. Ad esempio, voglio che la funzione fetch venga chiamata ogni volta che viene attivato l'evento keyup.non viene attivato - backbone
Quindi, ecco il codice:
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'));
}
}
});
}
});
Ma l'evento keyup non viene mai attivato. L'ho provato anche con "change" -event, che non funziona. Quando uso "keydown" o "keypress" invece tutto va bene e la funzione fetch è chiamata correttamente.
Ho anche cercato di legare l'evento a quell'ingresso campo manualmente nella inizializzazione-funzione
$('input#citySearch').bind('keyup',function() {
console.log('keyup');
});
Ma è anche non funziona. Funziona solo se lego l'evento al campo di input all'interno del mio file di modello di sottolineatura. Ma quella non potrebbe essere la soluzione.
Qualcuno ha un'idea di quale potrebbe essere il problema?
E 'possibile che il gestore collegato al campo tramite 'typeahead()' stia catturando 'keyup' e impedendogli di propagarsi? – ebohlman
no, anche questo non funziona, ho rimosso l'inizializzazione del campo typeahead e ho provato di nuovo l'evento keyup – crebuh