3

jquery 関数を使用して autoComplete テキストボックスを実装し、DB から提案値を取得しています。すべてがうまく見えます。

しかし、一致するデータが見つからない場合は、「一致が見つかりません」というユーザーフレンドリーなメッセージをユーザーに表示し、テキストボックスをクリアしたいと考えています。どうすればこれを実装できますか?

現在のコードを追加しました

function txtAutoComplete(acUrl, minLength, txtbxId) {
    $("#" + txtbxId).autocomplete({
        minLength: minLength, 
        source: function (request, responseFn) {
                $.post(acUrl, null, function (resp) {
                var txtValue = $.ui.autocomplete.escapeRegex(request.term);
                var matcher = new RegExp("^" + txtValue, "i");
                var a = $.grep(resp, function (item, index) {
                    return matcher.test(item);
                });
                responseFn(a);
            });
        }

Yuriy Rozhovetskiy に感謝します。

var error = 'No match';
if (a.length == 0) {
    responseFn(error);
}
else {
    responseFn(a);
}

しかし、エラーの提案は垂直に表示されますが、通常の自動提案のように表示するにはどうすればよいですか。ありがとう

4

3 に答える 3

1

Yuriy Rozhovetskiyによって提案されたようにコードを変更しましたが、機能するJSONを送信するように少し変更しました

var error = ["No match"];
if (a.length == 0) {
    responseFn(error);
}
else {
    responseFn(a);
}
于 2013-03-09T09:53:58.610 に答える
1

あなたはソース機能でこのすべてのスタッフを行うことができます:

source: function (request, responseFn) {
    $.post(acUrl, null, function (resp) {
        var txtValue = $.ui.autocomplete.escapeRegex(request.term);
        var matcher = new RegExp("^" + txtValue, "i");
        var a = $.grep(resp, function (item, index) {
            return matcher.test(item);
        });

        if(a.length == 0){
            alert("No matches found");
            $("#" + txtbxId).val("");
        }
        responseFn(a);
    });
}
于 2013-03-01T08:55:11.440 に答える
0

値を返すスクリプトでこの値を返すことができます。

何も返さない代わりに、いくつかの値があるかどうかを確認し、そうでない場合は、「一致が見つかりませんでした」値を含む 1 つの値を持つ配列を返します。

于 2013-03-01T08:15:41.640 に答える