Javascript 未为jQuery选择的选择字段触发主干更改事件
我有一个按钮,单击该按钮可以设置选择字段的值,还可以为选择字段设置一个更改事件。当通过鼠标/键盘正常选择时,“更改选择[name=location\u id]”事件起作用,但单击使用jQuery更改选择字段值的按钮不会触发“更改选择[name=location\u id]”事件 在通过jQuery更改字段时,如何让“change select[name=location\u id]”触发Javascript 未为jQuery选择的选择字段触发主干更改事件,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个按钮,单击该按钮可以设置选择字段的值,还可以为选择字段设置一个更改事件。当通过鼠标/键盘正常选择时,“更改选择[name=location\u id]”事件起作用,但单击使用jQuery更改选择字段值的按钮不会触发“更改选择[name=location\u id]”事件 在通过jQuery更改字段时,如何让“change select[name=location\u id]”触发 SubscriptionsModule.Views.SubscriptionEditView = Backb
SubscriptionsModule.Views.SubscriptionEditView = Backbone.Marionette.LayoutView.extend({
template: "subscriptions/edit",
events: {
'click #home-delivery-select': 'selectHomeDeliverySite',
'change select[name=location_id]': 'updateLocation'
},
selectHomeDeliverySite: function() {
this.$el.find('select[name=location_id]').val(this.model.get('hd_location_id'));
},
updateLocation: function(e) {
//update location code
},
updateOrderSize: function(e) {
SubscriptionsModule.eventManager.trigger('updateOrderSize', $(e.currentTarget).data('price'));
}
});
您只需添加一个事件:
this.$('select[name=location_id]').val(this.model.get('hd_location_id')).trigger('change');
更新
另外,请忽略下面的答案,因为根据,输入事件只针对
和
触发,不会针对
触发,因为
的值在选择其任何选项时不会更改(顺便说一句,
带有类型
复选框或收音机也不会发出输入
事件,因为它们的值
属性在选择时不会更改(!)
我将把答案留作参考
以下是不正确的
从
当用户提交对元素值的更改时,将为
、
和
元素触发更改事件。与输入事件不同的是,不一定为元素值的每次更改触发更改事件
据了解,change
事件对于所有IE和Opera来说都是错误的
试着替换
'change select[name=location_id]': 'updateLocation'
与
要在使用jquery更改某些内容后触发主干上的更改事件,需要触发更改事件
elem.trigger('change')
我希望这能起作用,但看起来输入事件只对和元素有效。被忽略了!不,没有。我刚刚测试了它…你完全正确。感谢你查找它!即使使用val()设置值,jQuery也不会触发更改
,所以为了让主干能够监听该事件,我们必须以编程方式触发它。jQuery文档中并没有真正记录它,但它是如何工作的。
'input select[name=location_id]': 'updateLocation'