0

我搜索了自动完成包以实现我的自动完成搜索。但我发现的只是自动完成一个单词。我需要一个单词列表——不只是一个。

它在堆栈标签输入上的行为应该像这里一样。用户开始输入 - 如果有设置标签,则选择标签。根据需要插入尽可能多的标签,当他完成整个标签列表时,应该使用 taggit 呈现由这些标签过滤的列表。

但是如何实现多标签的搜索呢?自动完成只适用于一个?!还是我理解错了什么?

4

2 回答 2

1

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的模型中有。用你的领域或你的必需品替换它

于 2014-12-20T08:55:56.370 回答
0

这是一个好主意“获取多个自动完成建议”。

这是自动完成的工作原理。例如,每当您在文本框中键入内容时,AJAX 就会运行并返回该特定文本的特定结果。

获得多个自动完成..

如果要执行多个自动完成,则需要根据重复出现将多个数据或标签保存在列中。或在数据库中建立“*一对多关系”并返回所有这些值。

于 2014-12-19T14:36:23.177 回答