我有一个城市字段,在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) {
}
});
请点击此处查看我实际获取的内容。 enter link description here 请检查并帮助我解决我的问题。
答案 0 :(得分:1)
根据website上的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进行简单的条件检查(在搜索框中键入的内容)。