我已经按照stickit文档中的建议,在初始化函数中插入了autocomplete。
几乎是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
对于类型为的绑定DOM元素上的
更改输入keyup
事件,stikit绑定确实绑定了事件侦听器。
select: function(event, ui) {
$(this).trigger("change", event);
}
在自动完成的选择事件回调中,我在元素上显式触发更改事件。您还可以配置事件:[自动完成选择]
而不是选择
回调。