2

カンマ区切りのセットの文字列からの値のリストの各項目をスクリプトに表示させたいです。

元。"1 2 3 4"

オートコンプリートのドロップダウンに、次のように表示されます。

1 2 3 4

ただし、現在のコードでは、単一の文字のみのリストが表示されます。そのリストを分割して、charの代わりに単語を表示する簡単な方法があるはずです。私のJavaScriptは少し制限されていますが、誰かが私のためにそれを理解できれば、私は感謝します。ありがとう。私は周りを検索していて、解析関数をオーバーライドできるはずですが、それよりも簡単でなければならないことを知っています。また、私はWebサービスを使用して文字列を返していますが、何でも区切ることができますが、単語を表示する必要があります。

誰かが答えを知っているなら、私は感謝します...ありがとう

       $("#CustomerID").autocomplete({
            source: function(request, response) {
               $.ajax({
                type: "POST",
                url: "/customer/search.asmx/findvalue",
                dataType: "json",
                data: {
                    term: request.term
                },
                error: function(xhr, textStatus, errorThrown) {
                    alert('Error: ' + xhr.responseText);
                    },
                success: function(data) {
                    response($.map(data, function(item) {
                        return {
                            label: item,
                            value: item
                        }
                    }));
                }
            });
        },
        minLength: 2,
        select: function(event, ui) {
            alert('Select');
        }
    });

編集 - - - - - - - - - - -

答えてくれた前のポスターに感謝します。

書式設定などのニュアンスのようです。

これは機能します:

success: function (data) {
    response($.map(data, function (item) {
        return item.split(",");
    }));   
},

これを使用すると、エラーが発生するか、何も実行されないようです。

        success: function(data) {
            response(data.split(","));
        }

私もこれを試しました、それは通り抜けますが、ドロップダウンメニューにはなりません:

success: function (data) {
    response($.map(data, function (item) {
        response(item.split(","));
    }));   
},

上記はうまくいくようで、私が望むものを表示しますが、それが効率的かどうかはわかりません。誰かが理由を説明したい場合は?オートコンプリートが機能するために、場合によってはresponse()やreturnが必要になる理由がわかりません。

4

1 に答える 1

1

.split()を使用して文字列を文字列の配列に分割してみてください(オートコンプリートウィジェットのソースとして配列が必要です)。

$("#CustomerID").autocomplete({
    source: function(request, response) {
       $.ajax({
            type: "POST",
            url: "/customer/search.asmx/findvalue",
            dataType: "json",
            data: {
                term: request.term
            },
            error: function(xhr, textStatus, errorThrown) {
                alert('Error: ' + xhr.responseText);
                },
            success: function(data) {
                response(data.split(","));
            }
        });
    },
    minLength: 2,
    select: function(event, ui) {
        alert('Select');
    }
});
于 2011-10-21T19:25:14.270 に答える