Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery.autocomplete.js-自动完成是如何工作的?_Jquery_Python_Django - Fatal编程技术网

jquery.autocomplete.js-自动完成是如何工作的?

jquery.autocomplete.js-自动完成是如何工作的?,jquery,python,django,Jquery,Python,Django,我使用GET请求的结果调用AutoCompletejQuery。 自动完成函数调用如下所示: $('#id_project_owner_externally').autocomplete('/pm/contact_autocomplete'); def iter_results(results): if results: for r in results: yield '%s|%s\n' % (r.first_name,

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

$('#id_project_owner_externally').autocomplete('/pm/contact_autocomplete');
def iter_results(results):
        if results:
            for r in results:
                yield '%s|%s\n' % (r.first_name, r.id)
url/pm/contact\u autocomplete返回元组列表。元组的第一部分是联系人的名称,第二部分是联系人的id

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

$('#id_project_owner_externally').autocomplete('/pm/contact_autocomplete');
def iter_results(results):
        if results:
            for r in results:
                yield '%s|%s\n' % (r.first_name, r.id)
现在我想知道jqueryautocomplete对first_name+id元组做了什么。实际上,第一个_名称被输入到输入字段中。但是id部分会发生什么呢。这是我需要的重要信息

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

编辑:解决方案

<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> 

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

有以下示例:

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()选项填充隐藏字段。
e、 g.
$('my#u hidden_field').val(item.extra_值)

侵入自动完成js并不是我真正喜欢的方式。隐马尔可夫模型。。看起来比预期的要复杂。这看起来很有希望。我试试看。这是正确的答案。使用.result()选项可以替换隐藏字段的值。用户从“自动完成”下拉列表中选择一个选项后,将触发结果部分。