0

我有一个城市字段,在 inlinedit 上调用它在下拉列表中加载 ajax 数据。但是当我输入一个术语时,它不会使用自动选择来选择结果。例如,如果我输入“pabna”,那么它应该选择带有“pabna”的自动选择选项,现在它只显示带有结果的下划线,即在“pabna”上它只在pabna 单词上显示一个下划线。我正在尝试使用以下数据函数改进我的代码。

$('#city_id').editable({
            type: 'select2',
            name: 'otmp_tx_user_details:city_id',
            pk:"userdetailid:<?php if($student_info->userdetailid) echo $student_info->userdetailid; else echo "0";?>",
                    select2: {
                                    ajax: {
                                    url: "<?php echo site_url()?>students/get_city_by_country",                                           
                                    dataType: 'json',
                                    data: function (term, page) {
                                        return {
                                            term: term 
                                        };
                                    },
                                    results: function (data,page) {
                                            //alert(data);
                                            return {results: data};
                                            }
                                        }
                                },

            url: "<?php echo site_url();?>students/inlineedit",
            success: function(data) {

            }
        });

请单击此处查看我实际获取的内容。在此处输入链接描述 请检查并帮助我解决我的问题。

4

1 回答 1

1

根据网站上的 Source2 文档:

“Select2 默认使用 jQuery 的 $.ajax 函数来执行远程调用。可以在 ajax 设置中指定替代传输函数,或者可以通过提供自定义查询函数而不是使用 ajax 助手来构建完全自定义的实现。”

我的自定义查询(使用 Backbone.js 模型和集合提供程序)如下:

query: function (query) {
    var data = {results: []};
    self.collection.each(function(model) {
        var s = "";
        if (model.get("name").indexOf(query.term) !== -1) {
            s += model.get("name");
            data.results.push({id: model.get("id"), text: s});
        }
    });
    query.callback(data);
}

如您所见,我只是对 query.term(在搜索框中输入的内容)进行了简单的条件检查。

于 2013-12-05T17:28:06.273 回答