2

jquery ui(1.8.11) オートコンプリート プラグインを使用しています。

使用可能なリストに値が存在するかどうかを確認するための単純なカスタム動作があります。これは、リストで利用できるものにユーザーを制限したいからです。入力がリストにない場合、ボックスの内容が消去されます。それはうまくいっています。

ただし、次の実装では、ユーザーは選択肢にないものを何でも書くことができます。存在しないものを彼に書かせたくない。

オプションが残っていないとすぐにユーザーが書く文字を消去する方法はありますか? または、リストにルックアップがある場合にのみ、一連の文字をヒットできるようにすることをお勧めします。

これまでの私のコードは次のとおりです

$("#autocomplete").autocomplete({
    autoFocus: true,
    delay: 200,
    source: function (request, response) {
        $.ajax({
            url: "/Country/Find", type: "GET", dataType: "json",
            data: { search: request.term, maxResults: 10 },
            success: function (data) {
                response($.map(data, function (item) {
                    return { label: item, value: item }
                }))
            }
        })
    },
    change: function (event, ui) {
        if (!ui.item) {
            $(this).val('');
        }
    }
});
4

2 に答える 2

1

私はこのようにしました:

$("#autocomplete").autocomplete({
    autoSelect: true,
    autoFocus: true,
    delay: 200,
    source: function (request, response) {
        $.ajax({
            url: "/Country/Find", type: "GET", dataType: "json",
            data: { search: request.term, maxResults: 10 },
            success: function (data) {
                //Check the length of the returned list if it's empty 
                if (data.length == 0) {
                    //Remove the last character from the input
                    $("#autocomplete").val(function (index, value) {
                        return value.substr(0, value.length - 1);
                    })
                    //Rerun search with the modified shortened input
                    $("#autocomplete").autocomplete("search");
                }
                response($.map(data, function (item) {
                    return { label: item, value: item }
                }))
            }
        })
    }
});
于 2012-11-12T15:51:04.823 に答える
1

ドロップダウンリストの選択を取得するためにこの質問を見つけました! JavaScriptを使用してドロップダウンリストで選択した値を取得しますか? しかし、最後の文字を削除するにはわかりません...

$("#autocomplete").autocomplete({
autoFocus: true,
delay: 200,
source: function (request, response) {
    $.ajax({
        url: "/Country/Find", type: "GET", dataType: "json",
        data: { search: request.term, maxResults: 10 },
        success: function (data) {
            response($.map(data, function (item) {
                    var e = document.getElementById("ddlViewBy");
                    var strUser = e.options[e.selectedIndex].value;
                    if(strUser  != null)
                    {
                        return { label: item, value: item }
                    }
                    else
                    {
                        //remove last char 
                    }
            }))
        }
    })
});
于 2012-11-12T14:56:19.580 に答える