我搜索了自动完成包以实现我的自动完成搜索。但我发现的只是自动完成一个单词。我需要一个单词列表——不只是一个。
它在堆栈标签输入上的行为应该像这里一样。用户开始输入 - 如果有设置标签,则选择标签。根据需要插入尽可能多的标签,当他完成整个标签列表时,应该使用 taggit 呈现由这些标签过滤的列表。
但是如何实现多标签的搜索呢?自动完成只适用于一个?!还是我理解错了什么?
我搜索了自动完成包以实现我的自动完成搜索。但我发现的只是自动完成一个单词。我需要一个单词列表——不只是一个。
它在堆栈标签输入上的行为应该像这里一样。用户开始输入 - 如果有设置标签,则选择标签。根据需要插入尽可能多的标签,当他完成整个标签列表时,应该使用 taggit 呈现由这些标签过滤的列表。
但是如何实现多标签的搜索呢?自动完成只适用于一个?!还是我理解错了什么?
jQueryUI 部分:
$("#id_of_your_input").keypress(function(){
$(this).autocomplete({
source: $(this).data('url'), ## or hard code it: source: '/api/...'
minLength: 2,
delay:300,
select: function(event, ui) {
$('#id_of_your_drop_down').val(ui.item.value);
}
});
});
处理您的视图$(this).data('url')
:
import json
NUMBER_OF_RESULTS = 5
def view_for_your_api(request):
if not request.is_ajax():
return HttpResponse('false')
results = model.objects.all()[:NUMBER_OF_RESULTS]
data = json.dumps([{'label': r.name, 'value': r.name} for r in results])
return HttpResponse(data, 'application/json')
我假设你r.name
的模型中有。用你的领域或你的必需品替换它
这是一个好主意“获取多个自动完成建议”。
这是自动完成的工作原理。例如,每当您在文本框中键入内容时,AJAX 就会运行并返回该特定文本的特定结果。
获得多个自动完成..
如果要执行多个自动完成,则需要根据重复出现将多个数据或标签保存在列中。或在数据库中建立“*一对多关系”并返回所有这些值。