jQueryオートコンプリートの問題-配列を正しく処理しない
-
05-07-2019 - |
質問
jQuery AutocompleteとMVCを使用して、ドロップダウンリストに多数の列名を入力しています。
ユーザーがフォーム上のDropDownBoxの値を変更するたびに、オートコンプリートボックスに入力する新しい列のリスト(配列としてJSON結果にラップ)を返すようにコントローラーに要求します。
私の問題は、オートコンプリートは単語を区別せず、代わりにc、h、a、r、a、c、t、e、rの文字を使用することを要求することです。それは非常に迷惑です。コードは次のとおりです。
function PopulateColumnsList(list) {
$(".columnDropdown").setOptions({ data: list });
}
$(document).ready(function() {
$(".columnDropdown").autocomplete("", {
width: 320,
max: 14,
highlight: false,
minChars: 0,
scroll: true,
scrollHeight: 300
});
$("#Data").change(function() {
$.ajax({
url: "/Home/ColumnNamesForDataSelect",
type: "GET",
data: { DataSelectID: parseInt($('#Data').val()) },
success: PopulateColumnsList
});
});
});
Getはこのレスポンスを返します:
[" Memo"、" Balance"]
Butmy AutoCompleteは、これらをそれぞれ2つではなく1文字として表示します:メモ、バランス。例のコードが結果を返す同様の方法を示しているので、これは正しいと思いました。
アイデアはありますか?
事前に感謝します。
解決
あなたが望むものの例を示すことは可能ですか?私は100パーセントをフォローしていません。
私のオートコンプリートは、ユーザーがテキストボックスに入力を開始するだけで、入力されている文字を調べて、その結果を含む可能性のある単語を返します。
私がやっている方法はこれです:
// JavaScript file
$("#id").autocomplete("AutoFill", { delay: 1 });
// view
public ContentResult AutoFill(string q)
{
var result = // go to database and grab all words that Start with whatever is in q.
string sendBack = null;
for (int i = 0; i < result.Count; i++)
{
sendBack += result[i] + Environment.NewLine;
}
return Content(sendBack);
}
それがあなたの役に立つかどうかはわかりません。
他のヒント
これはおかしな話かもしれませんし、答えとも言えませんが、応答の各添え字の項目を繰り返しているようですので、のような別の配列で応答をラップしてみましたか? [[&quot; Memo&quot;、&quot; Balance&quot;]]
?
まあ、あなたはonChange()イベントにバインドしています。これは文字ごとになります。私は似たような何かに出くわし、価値全体を望んでいました。 parse()関数をオーバーライドし、XMLパーサー/フォーマットを指定することでこれを処理し、result()関数をオーバーライドして、parse()関数で設定し直したrow []データを解析しました。
jQuery AutocompleterでPOSTを使用する方法
したがって、基本的には、選択からのデータと名前を含むrow []が常にあります(uはJSONも実行できます)。
また、新しいrow []配列を処理するには、formatItem()関数をオーバーライドする必要があります。
いくつかのjQueryオートコンプリートがあります。使用しているものに言及する場合に役立ちます。たとえば、 http://docs.jquery.com/Plugins/Autocompleteのようには見えません。 / setOptions は使用しているsetOptionsですか?