jQuery UI自动完成:告诉我我的标签'和'价值'

时间:2012-06-03 02:47:54

标签: jquery jquery-ui-autocomplete

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

包含我的查找值的aray看起来像这样(由Firebug记录):

[ Object { id="12", name="Don Davis" }, Object { id="17", name="Stan Smith" } ]

我想使用'id'作为'label'和'name'作为'value'但是无法弄清楚如何告诉配置对象。

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

另一个问题response通过创建隐藏表单输入来解决问题,但似乎有一种更清晰的方法来处理它。

3 个答案:

答案 0 :(得分:7)

通过阅读Jquery UI文档,您可以尝试以下内容:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

您必须返回如下数组:( side server PHP)

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