Javascript 用户更改输入值时触发函数(backbone.js)
我刚开始使用backbone.js,目前正在制作一个页面,其中有一个divJavascript 用户更改输入值时触发函数(backbone.js),javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我刚开始使用backbone.js,目前正在制作一个页面,其中有一个div#listing_filter,包含文本输入元素,还有一个表,显示从RESTful后端(PHP/Codeigniter)获取的一些列表。文本输入中的值将充当过滤器,以缩小服务器检索的结果范围 问题:每当任何文本框中的值发生更改时,我希望浏览器根据筛选值获得另一组结果。下面是我的尝试,其中即使文本输入值已更改,updateFilter函数也不会启动。你知道哪里出了问题吗 另一个问题是,我应该将#listing_filter的
#listing_filter
,包含文本输入元素,还有一个表,显示从RESTful后端(PHP/Codeigniter)获取的一些列表。文本输入中的值将充当过滤器,以缩小服务器检索的结果范围
问题:每当任何文本框中的值发生更改时,我希望浏览器根据筛选值获得另一组结果。下面是我的尝试,其中即使文本输入值已更改,updateFilter
函数也不会启动。你知道哪里出了问题吗
另一个问题是,我应该将#listing_filter
的内容放入模板中,还是将其硬编码到主体HTML中?谢谢
JS代码
window.ListingFilterView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'updateFilter');
},
events: {
'change input' : 'updateFilter'
},
updateFilter: function() {
console.log('hey');
}
});
// Router
var AppRouter = Backbone.Router.extend({
routes: {
'': 'listings',
},
listings: function() {
//... some other code here
this.listingFilterView = new ListingFilterView();
}
});
<div id="listing_filter">
Price: <input type="text" id="listing_filter_price" />
Beds: <input type="text" id="listing_filter_bedroom" />
Baths: <input type="text" id="listing_filter_bathroom" />
</div>
HTML代码
window.ListingFilterView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'updateFilter');
},
events: {
'change input' : 'updateFilter'
},
updateFilter: function() {
console.log('hey');
}
});
// Router
var AppRouter = Backbone.Router.extend({
routes: {
'': 'listings',
},
listings: function() {
//... some other code here
this.listingFilterView = new ListingFilterView();
}
});
<div id="listing_filter">
Price: <input type="text" id="listing_filter_price" />
Beds: <input type="text" id="listing_filter_bedroom" />
Baths: <input type="text" id="listing_filter_bathroom" />
</div>
价格:
病床:
浴室:
主干视图仅对视图的el
或其el
内的元素上的事件作出响应。默认情况下,视图的el
是公正的,您不会告诉视图使用任何其他内容
您可以告诉视图要使用哪个el
:
或者,您可以使用()将视图自身附加到该元素:
或者在定义视图()时设置el
:
一旦那不碍事了,您需要了解,
不会触发更改事件,因此您必须等待用户从输入中取出标签,或切换到监听按键
事件,并使用计时器检测它们何时停止键入。或更简单的方法:window.ListingFilterView=Backbone.View.extend({el:'#listing#u filter'/…}
。顺便说一句,您不需要将jQuery对象传递给el
属性,只需传递一个字符串:var v=new v({el:'#listing#u filter'})
@user1248256:真的,旧习惯等等。
window.ListingFilterView = Backbone.View.extend({
el: '#listing_filter',
//...
});