按照 Stickit 文档的建议,我已在初始化函数后插入了自动完成功能。
几乎 hello world 世界示例:
MyApp.Views.Form = Backbone.View.extend({ el: "#my-form", bindings: { "#postcode_with_suburbs": { observe: "postcode", initialize: function($el, model, options) { $el.autocomplete({ source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ] }) }, onSet: function(val, options) { return $("#postcode_with_suburbs").val(); } }, }, events: { "click #form-submit" : "submit", }, initialize : function() { this.listenTo(this.model, "change"); this.render(); }, render: function() { this.$el.html(JST['backbone/templates/car_insurance/form']); this.stickit(); return this; } });
所以问题是,每当用户填写表单并通过单击自动完成值自动完成邮政编码时,它都不会保存到模型属性中。 另存为 ja
而不是 java
但是,使用键盘向下滚动自动完成选项,这些值会正确设置为模型的属性。 另存为java
最佳答案
stickit 绑定(bind)确实绑定(bind)了 change input keyup
的事件监听器<input>
类型的绑定(bind) DOM 元素上的事件。使用监听器更新模型属性。元素postcode_with_suburbs
,就您而言,作为输入类型应该触发 change
当用户从下拉列表中选择选项之一时发生的事件。我不知道为什么它没有触发该事件。试试这个 fiddle here查看更改
select: function(event, ui) {
$(this).trigger("change", event);
}
在 select
自动完成的事件回调,我在元素上显式触发更改事件。您还可以配置events: [autocompleteselect]
而不是select
回调。
关于javascript - Stickit 不保存自动完成字段中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19579786/