5

私はjQuery 1.8.3でJquery-uiバージョン1.10.3を使用しており、オートコンプリートサーバーフェッチによってフェッチされたデータのカスタム表示を実装しようとしています:

これは、レンダリングのオーバーライドを行う部分です。

$(#"...").autocomplete(...)
 .data( "ui-autocomplete")._renderItemData = function( ul, item : Users.BriefUserDescriptor) {
    ul.data('ui-autocomplete-item', item);
    return $( "<li>" )
        .data('ui-autocomplete-item', item )
        .append( "<p>" + item.fullName + "<br>" + item.emailAddress+ "</p>" )
        .appendTo( ul );
};

これは機能します。要素は、フォーカスに関する問題を除いて、希望どおりに表示されます。

focus: function( event, ui) {
            var currentUser : Users.BriefUserDescriptor = ui.item;
            $("#invitePersonInput" ).val(currentUser.fullName);
            return false;
        },

これにより、常にエラーが発生します。つまり、currentUser (ui.item) が未定義です。

「ui-autocomplete-item」、「uiAutocomplete」などのいくつかの組み合わせを試しましたが、これまでのところ、この点で機能しているものはなく、メニューの入力を完全に実行できなかったものさえありました。

どんなヒントも素晴らしいでしょう。

4

2 に答える 2

2

この情報に感謝し、UI が未定義であるという同様の問題を解決するのに役立ちました。私にとっての問題は

_renderItem: function (ul, item, url) {
        return $('<li>')
            .data('item.autocomplete', url)

_renderItem: function (ul, item, url) {
        return $('<li>')
            .data('ui-autocomplete-item', url) 

jquery 1.9.1 スクリプトを jquery-ui 1.10.4 バリエーションに変換していました。

于 2014-03-13T05:27:49.287 に答える