1

入力をオートコンプリートするための次の関数があります。

$("#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 ) が含まれています。オートコンプリート リストの要素が選択された直後に、3 番目のパラメーターを取得して別の入力テキストに追加するにはどうすればよいですか?

4

2 に答える 2

1

selectイベントを使用します。

イベント ハンドラーには、次の 2 つのパラメーターが渡されます。

  • イベントオブジェクト
  • 選択された項目のデータを含むuiオブジェクトui.item

例:

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

ところで、メソッドをオーバーライドしようとする_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 ); 
};
于 2012-04-06T14:10:55.120 に答える
1
select: function(e, ui) {
        $('input#anotherInputTextId').val(ui.item.extra) ;
    }    
于 2012-04-07T04:00:56.700 に答える