1

Liferayに付属しているAlloyUIオートコンプリートプラグインを使用しています。オートコンプリートパーツは完全に正常に機能しています。

さて、オートコンプリートオートサジェストから選択したデータをキャプチャして操作したいです。

たとえば、ryオートコンプリートで書き込んだ後、リストが次のように表示されるとします。

ryan
rynda
ryab

ここで、項目をクリックするか、キーボードの矢印キーで選択してEnterキーを押すと、オートコンプリートのソース入力ボックスにコピーされます。しかし、私が欲しいのは、ユーザーが特定の1つのアイテムを選択したときに、戻って何もしないことryabです。

イベントを見つけました

autocomplete.on('itemSelect',function(event) {
};

これは、アイテムを選択すると発生しますが、選択されたオブジェクトを取得する方法と、オブジェクトを比較してfalseを返す方法/何もしない方法がわかりません。

どんな助けでもいただければ幸いです!

4

1 に答える 1

3

次のコードでうまくいくはずです。

var expandit = false;

autocomplete.on('itemSelect', function(event) {
    var currentValue = autocomplete.inputNode.get('value');
    //do comparison logic with currentValue here, and eventually set input node value to empty string
    if (currentValue == 'foo') {
        expandit = true;
        autocomplete.inputNode.set('value', '');
        // stop event propagation
        event.stopImmediatePropagation();
        return false;
    }
});

autocomplete.on('containerCollapse', function(event) {
    //reopen the menu in case of "do nothing" selection
    if (expandit) {
        autocomplete._sendQuery(autocomplete.inputNode.get('value') + '*');
        expandit = false;
    }
});

ウィジェットのAlloyUIリファレンスAPIソースコードは役に立ちました。Autocomplete


使用できるメニューをプログラムで表示するには、次のようにします。

autocomplete._sendQuery(autocomplete.inputNode.get('value') + '*');
于 2012-11-20T17:53:45.783 に答える