假设我有一个网站,其中包含一些字段,我想对其进行一些计算。我有一个数量输入,并在我的backbone.js视图中我将“更改”事件绑定到此输入。
如何获取输入字段的更改值?
我找到了这个方法(下面)来获取值,但感觉不对,因为我必须在我的函数中再次知道元素ID。例如,我不能用课来做这件事。
window.Calculations = Backbone.View.extend({
(...)
events: {
'change input#quantity': 'changeQuantity'
},
changeQuantity: function() {
var val = $(this.el).find('input#quantity').val();
this.model.set({'quantity': val});
}
});
在HTML中:
<input type="text" id="quantity" value="<%= quantity %>">
我接近这个吗?是否有一个变量可以访问已更改的对象?我知道$(this.el)不是它,它只是容器。
答案 0 :(得分:23)
jQuery向您的函数event
发送changeQuantity
个对象。有了它,您可以检索更改的输入。
window.Calculations = Backbone.View.extend({
//(...)
events: {
'change input#quantity': 'changeQuantity'
},
changeQuantity: function(e) {
var val = $(e.currentTarget).val();
this.model.set({'quantity': val});
}
});
我创建了一个jsfiddle作为示例:http://jsfiddle.net/tz3XS/138/
答案 1 :(得分:0)
你必须使用事件的target
,你可以将其作为回调函数的参数。
(我必须自己添加一些代码才能使它工作,因为你没有给我们用window.CalcModel(一个空模型)代替它的模型代码)
window.CalcModel = Backbone.Model.extend({});
window.Calculations = Backbone.View.extend({
events: {
'change input#quantity': 'changeQuantity'
},
initialize: function() {
},
changeQuantity: function(evt) {
var val = $(evt.target).val();
this.model.set({'quantity': val});
$(this.el).find('#result').text('new value = ' + val);
},
render: function() {
}
});
var c = new window.Calculations({model:new CalcModel(),el:'#myView'});