jquery.autocomplete.js - 自动完成工作原理如何?

时间:2010-01-10 18:29:43

标签: jquery python django

我使用GET请求的结果调用自动完成jquery。 自动完成函数调用如下所示:

$('#id_project_owner_externally').autocomplete('/pm/contact_autocomplete');

url / pm / contact_autocomplete返回元组列表。元组的第一部分是联系人的名字,元组的第二部分是联系人的ID。

相应的功能(django视图的一部分)如下所示:

def iter_results(results):
        if results:
            for r in results:
                yield '%s|%s\n' % (r.first_name, r.id)

现在我想知道jquery autocomplete正在使用first_name + id元组做什么。实际上,first_name被放入输入字段。但是id部分会发生什么。这是我需要的重要信息。

我可以告诉jquery应该将id放入某个隐藏字段吗?

link to js source

编辑:解决方案

<script type="text/javascript"><!--//
        $('#id_project_manager_externally').autocomplete('/pm/contact_autocomplete').result(function(event, item) {$('#id_project_manager_externally_hidden').attr("value", item[1]);});//--></script> 

2 个答案:

答案 0 :(得分:3)

plugin docs有这个例子:

var data = [ {text:'Link A', url:'/page1'}, {text:'Link B', url: '/page2'} ];
$("...").autocomplete(data, {
  formatItem: function(item) {
    return item.text;
  }
}).result(function(event, item) {
  location.href = item.url;
});

因此,您基本上可以使用.result()选项来填充隐藏字段。 例如$('#my_hidden_field').val(item.extra_value);

答案 1 :(得分:2)

您需要查看jquery.autocomplete.js源代码,您的python代码所做的只是返回由散列字符分隔的id和名称,每行一个记录。自动完成javascript处理该输出,因此这是您需要修改以将ID放入隐藏字段的代码部分。