从自动完成插件中获取JSON数组中的额外参数

时间:2012-04-06 13:59:39

标签: javascript jquery json autocomplete

我有自动完成输入的下一个功能:

$("#auto").autocomplete({
        source:"/autocomplete.php",
        minLength: 5,
        _renderItem: function( ul, item) { 
            return $( "<li></li>" ) 
                .data( "item.autocomplete", item ) 
                .append( $( "<a></a>" ).text( item.label ) ) 
                .appendTo( ul ); 
            }   

});

JSON数组包含3个参数(value,label,extra)。如何在选择自动完成列表中的元素后立即抓取第三个参数并将其附加到另一个输入文本?

2 个答案:

答案 0 :(得分:1)

使用select事件。

事件处理程序传递了两个参数:

  • 事件对象
  • 一个ui对象,其中包含ui.item
  • 中所选项目的数据

示例:

$("#auto").autocomplete({
        source:"/autocomplete.php",
        minLength: 5,
        select: function(e, ui) {
            // "ui.item" is the data item
            alert(ui.item.extra);
        }    
});

BTW,您尝试覆盖_renderItem方法的方式不正确,应该是:

$("#auto").autocomplete({
    source:"/autocomplete.php",
    minLength: 5,
})
.data('autocomplete')
._renderItem = function( ul, item) { 
    return $( "<li></li>" ) 
        .data( "item.autocomplete", item ) 
        .append( $( "<a></a>" ).text( item.label ) ) 
        .appendTo( ul ); 
};

答案 1 :(得分:1)

select: function(e, ui) {
        $('input#anotherInputTextId').val(ui.item.extra) ;
    }