barbitoff programmer`s blog

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

пятница, 20 апреля 2012 г.

Валидация полей ввода, использующих jQuery.UI-виджет autocomplete

Задача:

При валидации формы с использованием плагина jquery.validation проверить, что в полях, использующих виджет автодополнения jQuery UI (autocomplete) введено значение, входящее в их список автодополнения (в качестве источника автодополнения используется статичный массив).

Решение:

Добавляем свой метод валидации и привязываем его к классу "ui-autocomplete-input", который устанавливается autocomplete-виджетом на полях ввода, к которым он привязан:
jQuery.validator.addMethod("jqueryUiAutocomplete",function(value, element){
if(this.optional(element))
 return true;
return $(element).autocomplete("option","source").indexOf(value)!=-1;
},"Пожалуйста, выберите значение из списка");
jQuery.validator.addClassRules("ui-autocomplete-input",{jqueryUiAutocomplete:true}); 
Необходимо учесть деталь, что метод Array.indexOf есть не во всех браузерах (как это поправить, я уже когда-то давно писал тут). Если используется другой вариант источника данных для автозаполнения (функция / AJAX), такой вариант не подходит.

Комментариев нет:

Отправить комментарий