9

現在、javascript 変数に格納されているソースを使用してオートコンプリートを作成しようとしていますが、この変数は別の関数によって更新できます。だから、私が望むのは、ユーザーがオートコンプリート フィールドを更新するたびに、オートコンプリートのフィールドsourceが生成されることです。

私が使用するコードは次のとおりです。

<head>
    <script>
        var availableTags = ['java', 'javascript']
        // can be called anytime
        var addToTags = function(str){availableTags.push(str)}

        $(function() {
            $( "#tags" ).autocomplete({
                source: availableTags
            });
        });
    </script>
</head>
<body>
    <div class="ui-widget">
        <label for="tags">Tags: </label>
        <input id="tags" />
    </div>
</body>

コールバックのような関数を実行する必要がありますか?

4

3 に答える 3

12

javascript 変数に格納されているソースですが、この変数は別の関数で更新できます。

それはうまくいくはずです。オートコンプリートと更新関数の両方が同じ配列を参照する場合、いつでも新しい値をプッシュできます。この値は、次に配列が評価されるとすぐに使用されます (キーストロークなど)。

ユーザーがオートコンプリート フィールドを更新するたびに、オートコンプリートのソース フィールドが生成されるようにしたいと思います。

それは別のものです。はい、これにはsource配列を動的に生成するためのコールバック関数が必要ですが、それは簡単です。ドキュメントを見てください:

$( "#tags" ).autocomplete({
    source: function(request, resolve) {
        // fetch new values with request.term
        resolve(availableTags);
    }
});
于 2012-12-13T09:18:26.507 に答える
3

addToTags関数にオートコンプリートへのリセット呼び出しを追加するだけです。

var addToTags = function(str){
   availableTags.push(str);
   $( "#tags" ).autocomplete({
       source: availableTags
   });
}
于 2012-12-13T09:18:32.137 に答える
1

これは非常に簡単です

$( "#tags" ).autocomplete('option', 'source', availableTags)

必要に応じて availableTags 配列を設定する

于 2016-09-02T07:13:46.857 に答える