私は、オートコンプリートセットと完全に正常に動作するテキストボックスを持っています。しかし、私はそれがmatchSubset機能にjQueryオートコンプリート:matchSubsetオプションの問題
if (!options.matchCase)
s = s.toLowerCase();
var i = s.indexOf(sub);
でautocomplete.jsファイルにエラーがスローされますmatchSubsetオプションを使用しようとします。 'オブジェクトはこのプロパティまたはメソッドをサポートしていません'というエラーが表示されます。以下は私のオートコンプリートコードです:
$('#txtUsers')
.autocomplete("AjaxHandler.asmx/GetUserData", {
width: 320,
max: 10,
minChars: 3,
matchSubset: true,
formatItem: function(data, i, n, value) {
return value.FullName + " (" + value.DepartmentName + ")";
},
parse: function(data) {
var items = eval($(data).text());
return $.map(items, function(row, i) {
return {
data: row,
value: row,
result: row
}
});
}
})
.result(function(event, data, formatted, text) {
if (data) {
$(this).val(data[0].FullName);
}
});
初めて3文字を入力すると、正常に動作します。しかし、私が4番目の文字を入力すると、上記のエラーが出ます。データを解析する際に間違いをしていますか?私はWebサービスが私にラップされたデータを与えているので、解析関数のデータを評価しなければなりませんでした。 matchSubsetオプションを削除すると、コードは正常に動作しますが、毎回サーバーに照会します。どんな助け?
更新:問題は私の解析機能にあると思います。上記のmatchSubset関数のコードでは、 's'は文字列値であると予想されます。私の場合、FullName、DepartmentNameなどの複数の値を含むオブジェクトです。どのようにして解析関数を変更できますか?
その行 'var items = eval($(data).text());'のようなものです。エラーが出る直前に 'data'の内容を調べてみましたか? (エラーを返す関数の 's'はオブジェクトの配列解析結果の' value'に対応しているようです) –
$(data).text()は、文字列。それが私がオブジェクトを得るために評価しなければならなかった理由です。 – Ashish