jQuery UI オートコンプリートで「mustMatch」と「selectFirst」を実装するにはどうすればいいですか? 質問する

jQuery UI オートコンプリートで「mustMatch」と「selectFirst」を実装するにはどうすればいいですか? 質問する

私は最近、いくつかのオートコンプリートプラグインを、ベース奏法jQuery UI オートコンプリート

コアのオートコンプリート コード自体を変更せずに、コールバックとその他のオプションだけで「mustMatch」と「selectFirst」を実装するにはどうすればよいでしょうか?

ベストアンサー1

両方の機能を解決したと思います...

作業を簡単にするために、一般的なカスタムセレクターを使用しました。

$.expr[':'].textEquals = function (a, i, m) {
    return $(a).text().match("^" + m[3] + "$");
};

残りのコード:

$(function () {
    $("#tags").autocomplete({
        source: '/get_my_data/',
        change: function (event, ui) {
            //if the value of the textbox does not match a suggestion, clear its value
            if ($(".ui-autocomplete li:textEquals('" + $(this).val() + "')").size() == 0) {
                $(this).val('');
            }
        }
    }).live('keydown', function (e) {
        var keyCode = e.keyCode || e.which;
        //if TAB or RETURN is pressed and the text in the textbox does not match a suggestion, set the value of the textbox to the text of the first suggestion
        if((keyCode == 9 || keyCode == 13) && ($(".ui-autocomplete li:textEquals('" + $(this).val() + "')").size() == 0)) {
            $(this).val($(".ui-autocomplete li:visible:first").text());
        }
    });
});

オートコンプリート候補に正規表現で使用される「特殊」文字が含まれている場合は、カスタムセレクターのm[3]内でそれらの文字をエスケープする必要があります。

function escape_regexp(text) {
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}

カスタムセレクターを変更します。

$.expr[':'].textEquals = function (a, i, m) {
  return $(a).text().match("^" + escape_regexp(m[3]) + "$");
};

おすすめ記事