这里有点困惑,JQuery Autocomplete插件中的formatResult和formatItem是做什么的?
我有一个函数返回逗号分隔的字符串(来自Django),但是我的自动完成功能无法将字符串拆分为单独的条目/行,我如何使用自动完成功能实现此目的?
例如,返回的结果看起来像这样,这是自动完成显示的内容:-
[“one”,“oneTwo”,“Onethree”,“anotherOne”]
我希望在自动完成字段中显示时将其拆分为:-
one
oneTwo
Onethree
anotherOne
我有一种感觉,我可以使用formatResult和formatItem,但是我不知道如何,那里没有很好的例子!
我在html模板中的代码:
function autoFill(){
$("#tags").autocomplete("/taglookup/", {
width: 320,
max: 4,
highlight: false,
multiple: true,
multipleSeparator: " ",
scroll: true,
scrollHeight: 300
});
}
我正在使用Dajango处理GET请求。
盖特
最佳答案
formatItem
格式化要在下拉列表中显示的项目,而formatResult
格式化要在输入框中显示的项目,一旦选中它。
默认情况下,自动完成功能希望从指定的url中获取数据,格式为:
foo|bar|baz|bing
zaz|ding|blop|grok
每行是一行数据;每行都是传递给
formatItem
和formatResult
的数据。您可能想采用阻力最小的路径,并按自己喜欢的方式返回数据。如果要使用不符合自动完成假设的数据,则需要使用(据我所知,未记录)parse选项来标识用于解析ajax请求结果的函数。在我看来,您的django View 正在返回一个数组,而不是返回一个格式化的字符串。要将数组格式化为jquery,请按以下步骤操作:
return HttpResponse('|'.join(your_array), mimetype='text/plain')
这是使用非标准自动完成数据(JSON)进行自动完成的示例:
<script type="text/javascript">
format_item = function (item, position, length){
return item.title;
}
// Handle data from ajax request
prep_data = function(data){
tmp = $.evalJSON(data);
parsed_data = [];
for (i=0; i < tmp.length; i++) {
obj = tmp[i];
// Other internal autocomplete operations expect
// the data to be split into associative arrays of this sort
parsed_data[i] = {
data: obj ,
value: obj.isbn13,
result: obj.title
};
}
return parsed_data
}
$(document).ready(function(){
$("#fop").autocomplete({
url : "{% url book-search %}",
// undocumented
parse: prep_data,
formatItem: format_item,
});
})
</script>
关于javascript - JQuery Autocomplete中的formatResult和formatItem选项有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/737453/