1

次のソースタグを使用して、気に入った機能を実現しました。

source: function (request, response) {
                 // delegate back to autocomplete, but extract the last term
                 response($.ui.autocomplete.filter(availableTags, extractLast(request.term)));
             },

次のソースタグを使用して、新しい機能を実現しました。

source: function (request, response) {
                // Using a custom source callback to match only the beginning of terms
                var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i");
                response($.grep(availableTags, function (item) {
                    return matcher.test(item);
                }));
            }

これらの2つのソースタグを組み合わせて、両方の機能を使用するにはどうすればよいですか?

4

1 に答える 1

1

あなたは次のようなものを探していると思います(extractLast用語全体ではなく、の結果を正規表現に渡すだけです):

source: function (request, response) {
    var term = extractLast(request.term),
        matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");

    response($.grep(availableTags, function (item) {
        return matcher.test(item);
    }));
}

例: http://jsfiddle.net/Aa5nK/6/

両方が何をしているのか:

  • 最初のものは、ユーザーが最後に入力した項目に基づいてオートコンプリート用語をフィルタリングしています ( で区切られています,)
  • 2 つ目は、ユーザーが入力した用語に基づいて正規表現を作成することです。は^「で始まる」ことを意味し、その後に用語から特殊文字を削除するユーティリティ関数が続き、最後にi正規表現で大文字と小文字を区別しないようにするパラメーターが続きます。
  • それらを組み合わせるには、最後の用語を抽出し ( を使用してextractLast)、その用語に基づいて正規表現を作成するだけです。
于 2013-03-02T22:00:09.600 に答える