jQuery オートコンプリートに問題があります。2種類のアイテムを表示するようにカスタマイズしています:
- 検索文字列への実際の一致と
- 提案 (スペル修正、関連キーワードなど)
バックエンドはそれに関するすべての作業を行います。オートコンプリートには 2 つのリストが与えられます。
写真はよりよく説明できます:
http://shot.ninjaloot.se/20120412.141112.png (データは開発時のダミーデータで、スタイリングは未完成です)
レンダリングが機能している間、アイテムの選択 (クリックまたはその他の方法) は、デバッグが困難な例外をスローします。
TypeError: 'undefined' is not an object (evaluating 'ui.item.data')
私が理解しているように、menu.selected 関数にはui
未定義のitem
キーを持つ引数が与えられます。
なぜこれが起こるのですか?どうすればよいですか? カスタム レンダラーをコメント アウトすると、選択が機能します。
これは私のカスタム レンダラー関数です。これは、UI ソース ファイル内のものから逐語的に持ち上げられ、その後、私のカスタム ハクシングを実行するために拡張されました。
$input.data("autocomplete")._renderItem = function(ul, item) {
var cls = 'ui-menu-item';
if(item.label === null) {
cls += ' center disabled';
item.label = '-- perhaps thou meaneth --';
}
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a class='ui-corner-all'>" + item.label + "</a>")
.addClass(cls)
.appendTo(ul);
};
さらにコードが必要な場合は、喜んで提供します。