Если элементы для автодополнения являются объектами и содержат и поле value, и поле label, то при фильтрации элементов для автодополнения виджет autocomplete использует label. Такой вариант недопустим если, например, label был специально обрезан, чтобы слишком не растягивать список подсказок. В данном случае фильтровать элементы нужно по value.
Чтобы исправить ситуацию, нужно переопределить функцию jQuery.ui.autocomplete.filter:
jQuery.ui.autocomplete.filter = function(array, term) {(в оригинале value.value и value.label идут в обратном порядке)
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
return $.grep( array, function(value) {
return matcher.test(value.value || value.label || value );
});
что за матчер.тест? и что его параметры означают, не очень понятно.
ОтветитьУдалитьЗаранее спасибо.
капча ад
matcher.test() проверяет, что его параметр соответствует регулярному выражению matcher, которое было создано ранее. А в параметре в matcher.test() передается либо value элемента списка (если оно не пусто), либо его label, либо, если и value, и label пусты - тогда просто сам элемент списка (последний вариант сработает, если список составлен просто из значений, а не из объектов с полями label И value).
УдалитьPS Всегда пожалуйста, будут ещё вопросы - пишите. Можно тут, можно на aspirin.spb@gmail.com