barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)
Показаны сообщения с ярлыком jQuery UI autocomplete поиск по value вместо label. Показать все сообщения
Показаны сообщения с ярлыком jQuery UI autocomplete поиск по value вместо label. Показать все сообщения

четверг, 19 июля 2012 г.

Виджет jQuery UI autocomplete и поиск по value, а не по label

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