У меня есть текстовое поле с установленным автозаполнением и работает отлично. Однако, когда я пытаюсь использовать параметр matchSubset, он выдает ошибку в файле autocomplete.js на
if (!options.matchCase)
s = s.toLowerCase();
var i = s.indexOf(sub);
в функции 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-ый символ, это дает мне вышеупомянутую ошибку. Это то, что я делаю какую-то ошибку в анализе моих данных? Мне пришлось оценивать данные в функции разбора, потому что мой веб-сервис выдает мне упакованные данные. Если я уберу опцию matchSubset, код будет работать нормально, но каждый раз будет запрашивать сервер. Любая помощь?
<Ч />
ОБНОВЛЕНИЕ: я думаю, что проблема с моей функцией разбора. В приведенном выше коде в функции matchSubset ожидается, что 's' будет строковым значением, тогда как для меня это объект, содержащий несколько значений, таких как FullName, DepartmentName и т. Д. Как я могу соответственно изменить свою функцию синтаксического анализа?