Задача:
При валидации формы с использованием плагина 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), такой вариант не подходит.
Комментариев нет:
Отправить комментарий