jqueryui自动完成:告诉它我的';标签';和';价值';

jqueryui自动完成:告诉它我的';标签';和';价值';,jquery,jquery-ui-autocomplete,Jquery,Jquery Ui Autocomplete,有没有办法告诉jQuery UI Autocomplete哪些JSON数组索引用作“标签”和“值”,而这些不是JSON数组中使用的索引名 包含我的查找值的aray如下所示(由Firebug记录): 我想使用'id'作为'label','name'作为'value',但不知道如何告诉配置对象 我的数组包含在一个局部变量中——没有进行Ajax调用 通过创建一个隐藏的表单输入,这个问题解决了这个问题,但似乎有一种更干净的方法来处理这个问题。通过阅读文档,您可以尝试以下方法: <script>

有没有办法告诉jQuery UI Autocomplete哪些JSON数组索引用作“标签”和“值”,而这些不是JSON数组中使用的索引名

包含我的查找值的aray如下所示(由Firebug记录):

我想使用'id'作为'label','name'作为'value',但不知道如何告诉配置对象

我的数组包含在一个局部变量中——没有进行Ajax调用

通过创建一个隐藏的表单输入,这个问题解决了这个问题,但似乎有一种更干净的方法来处理这个问题。

通过阅读文档,您可以尝试以下方法:

<script>
    $(function() {
var projects = [ { id: "12",value: "Don Davis" }, { id: "17", value:"Stan Smith" } ]

    $( "#project" ).autocomplete({
        minLength: 0,
        source: projects,
        focus: function( event, ui ) {
            $( "#project" ).val( ui.item.value);
            return false;
        },
        select: function( event, ui ) {
            $( "#project" ).val( ui.item.value);
            $( "#project-id" ).val( ui.item.id);

            return false;
        },
        search: function(event, ui) { console.log(event); console.log(ui) }
    })
    .data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append( "<a>" + item.value+"</a>" )
            .appendTo( ul );
    };
});​
    </script>

$(函数(){
var项目=[{id:“12”,值:“Don Davis”},{id:“17”,值:“Stan Smith”}]
$(“#项目”).autocomplete({
最小长度:0,
资料来源:项目,
焦点:功能(事件、用户界面){
$(“#项目”).val(ui.item.value);
返回false;
},
选择:功能(事件、用户界面){
$(“#项目”).val(ui.item.value);
$(“#项目id”).val(ui.item.id);
返回false;
},
搜索:函数(事件,ui){console.log(事件);console.log(ui)}
})
.数据(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“
  • ”) .data(“item.autocomplete”,item) .append(“+item.value+”) .附录(ul); }; });​
    必须返回如下数组:(端服务器PHP)

    (…){
    $suggest=array('value'=>$value,'label'=>$label);
    }

    只需将结果转换为包含标签值对象列表的数组即可

    var list= result.map(function (item) { return { label: item.title, value: item.value }; });
    $( "#project" ).autocomplete({
        source: list
    });
    

    如果您使用函数作为“源”参数,Yu可以做任何您想做的事情。谢谢-docs演示还使用隐藏字段作为“id”(如在您的#project id字段中),因此我想这是官方支持的方法,而不是直接调整JSON数组索引。这种方式可能会表现得更好。再次感谢。请注意,在jQueryUI1.11(可能更早)中,
    data(“autocomplete”)
    应该是
    data(“uiAutocomplete”)
    var list= result.map(function (item) { return { label: item.title, value: item.value }; });
    $( "#project" ).autocomplete({
        source: list
    });