Jquery ui 如何向Jquery UI自动完成文本输入添加值

Jquery ui 如何向Jquery UI自动完成文本输入添加值,jquery-ui,jinja2,Jquery Ui,Jinja2,因此,在我的Jinja2模板中有一个jQueryUI自动完成小部件,它非常有效。但是,我希望每个程序的值都是程序ID,而不是名称。IE:{{p.id}如何将名称设置为标签,将id设置为值 <script> $(function() { var programs = [ {% for p in programs %} '{{ p.Name }}', {% endfor %} ]; $( "#programs" ).

因此,在我的Jinja2模板中有一个jQueryUI自动完成小部件,它非常有效。但是,我希望每个程序的值都是程序ID,而不是名称。IE:
{{p.id}
如何将名称设置为标签,将id设置为值

<script>
$(function() {
    var programs = [
        {% for p in programs %}
        '{{ p.Name }}',
        {% endfor %}
    ];
    $( "#programs" ).autocomplete({
        source: programs
    });
});
</script>

<input type="text" name="program" id="programs" />

$(函数(){
var程序=[
{程序%中的p为%0}
“{p.Name}}”,
{%endfor%}
];
$(“#程序”).autocomplete({
资料来源:方案
});
});
看一看,这应该能奏效

基本上,您可以向自动完成文本框提供
name | id
项的列表。然后它将显示名称,您只需修改文本框,使用
.result()
函数将id放入隐藏的表单元素中即可。像这样:

$("#mytextbox")
  .autocomplete(data)
  .result(
    function (evt, data, formatted)
    {
      $("#hiddenIDbox").val(data[1]);
    }
);

这种方法可以工作,但是一旦选择了自动完成建议,条目id就会显示在输入字段中。。我想这会让用户感到困惑。还有其他想法吗

<script>
$(function() {
    var programs = [
        {% for p in programs %}
        {
        value: "{{ p.id }}",
        label: "{{ p.Name }}"
        },
        {% endfor %}
    ];
    $( "#programs" ).autocomplete({
        source: programs
    });
});
</script>

$(函数(){
var程序=[
{程序%中的p为%0}
{
值:“{p.id}}”,
标签:“{p.Name}”
},
{%endfor%}
];
$(“#程序”).autocomplete({
资料来源:方案
});
});
好的,这就行了

UI自动完成输入由
标签
属性填充。
hidden_val
属性使用
select
事件设置隐藏输入

<script>
$(function() {
    var programs = [
        {% for p in programs %}
        {
        hidden_val: "{{ p.id }}",
        label: "{{ p.Name }}"
        },
        {% endfor %}
    ];
    $( "#programs" ).autocomplete({
        delay: 0,
        source: programs,
        select: function(event, ui){
            $( "#program_val" ).val(ui.item.hidden_val);
        }
    });
});
</script>

<input type="text" id="programs" />
<input type="hidden" id="programs_val" />

$(函数(){
var程序=[
{程序%中的p为%0}
{
隐藏值:“{p.id}}”,
标签:“{p.Name}”
},
{%endfor%}
];
$(“#程序”).autocomplete({
延迟:0,
资料来源:方案,
选择:功能(事件、用户界面){
$(“#program_val”).val(ui.item.hidden_val);
}
});
});

我相信本文针对的是现在不推荐使用的jQuery自动完成插件,而不是jQueryUI插件(它没有
结果
功能)