1

按照stickit文档的建议,我在初始化功能后插入了自动完成功能。

几乎是你好世界的例子:

MyApp.Views.Form = Backbone.View.extend({
    el: "#my-form",
    绑定:{
        “#postcode_with_suburbs”:{
            观察:“邮政编码”,
            初始化:函数($el,模型,选项){
                $el.自动完成({
                    来源:[“c++”、“java”、“php”、“coldfusion”、“javascript”、“asp”、“ruby”]
                })
            },
            onSet:函数(val,选项){
                return $("#postcode_with_suburbs").val();
            }
        },
    },
    事件:{
        “点击#form-submit”:“提交”,
    },
    初始化:函数(){
            this.listenTo(this.model, "change");
            this.render();
    },
    渲染:函数(){
        this.$el.html(JST['backbone/templates/car_insurance/form']);
            this.stickit();
        返回这个;
    }
});

所以问题是每当用户填写表单并通过单击自动完成值来自动完成邮政编码时,它都不会保存到模型属性中。Saved as ja代替java

在此处输入图像描述

但是,使用键盘在自动完成选项上向下滚动时,这些值会正确设置为模型的属性。Saved as java

4

1 回答 1

0

stickit 绑定确实为change input keyup绑定 DOM 类型的元素上的事件绑定了一个事件侦听器<input>。使用侦听器更新模型属性。在您的情况下,元素postcode_with_suburbs作为输入类型应该change在用户从下拉列表中选择一个选项时触发事件。我不知道为什么它没有触发事件。在这里试试这个小提琴查看更改

select: function(event, ui) {
    $(this).trigger("change", event);
}

select自动完成的事件回调中,我在元素上显式触发更改事件。您也可以配置events: [autocompleteselect]而不是select回调。

于 2014-04-11T15:06:23.883 回答