Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Валидация поля несколькими плагинами

Валидация поля несколькими плагинами 6 мес. 4 нед. назад #11287

  • dimsco
  • dimsco аватар
  • Не в сети
  • Новый участник
  • Сообщений: 19
  • Спасибо получено: 3
  • Репутация: 2
Seblod предлагает замечательный механизм валидации поля. Незамечательным при этом является возможность использования только одного плагина валидации у поля одновременно.

Например, использовать проверку Ajax и regex (очень даже часто встречаемая ситуация) - не получится.

Хуже того, если у Вас задано ограничение на минимальную/максимальную длину поля, то при использовании, например ajax-валидации эта самая проверка осуществляться не будет.
Think different / Tastes differ
Администратор запретил публиковать записи гостям.

Валидация поля несколькими плагинами 6 мес. 4 нед. назад #11288

  • dimsco
  • dimsco аватар
  • Не в сети
  • Новый участник
  • Сообщений: 19
  • Спасибо получено: 3
  • Репутация: 2
Чтобы совместить ajax-проверку и валидацию на минимальную/максимальную длину, предлагаю следующее:

Как известно, валидация подключается к полю путем прописывания в класс его управляющего элемента конструкции validate[], обработка которой осуществляется автоматически формируемым в HEAD страницы скриптом вида:
jQuery(document).ready(function($){ $.validationEngineLanguage.newLang({"имя_поля":{"regex":регулярка, если нет - none,"alertText":"текст предупреждения"}, "minSize":{"regex":"none","alertText":"Минимум ","alertText2":" символов"}); });

Для ajax-проверки и проверки на минимальную длину 4 символя для поля my_field конструкция будет следующей:
validate[ajax[availability_my_field], minSize[4]]
Для работоспособности проверки на длину перед ajax-проверкой нам нужно просто-напросто получить конструкцию вида:
validate[minSize[4], ajax[availability_my_field]],
это можно сделать элементарным скриптом:

jQuery(document).ready(function($){
jQuery('input[class*="ajax\\["]').each(function(indx, element){
var our_class = jQuery(this).attr('class');
var pattern_ajax = new RegExp("ajax\\[(.*?)\\]");
var result_ajax = pattern_ajax.exec(our_class);
if(result_ajax[0]!=null){
var tmp_class = our_class.replace(result_ajax[0] + ",", " ");
if(tmp_class!=our_class){
tmp_class = tmp_class.replace("]]", "], " + result_ajax[0] + "]");
}
jQuery(this).attr('class', tmp_class);
}
});
});
Think different / Tastes differ
Администратор запретил публиковать записи гостям.

Валидация поля несколькими плагинами 6 мес. 4 нед. назад #11289

  • dimsco
  • dimsco аватар
  • Не в сети
  • Новый участник
  • Сообщений: 19
  • Спасибо получено: 3
  • Репутация: 2
Добавить же к ajax-проверке для приведенного выше примера еще и проверку на какое-нибудь регулярное выражение можно так:

1. Создаем точно такое же поле (пусть оно будет my_field_regex), навешиваем на него валидацию по ajax, скрываем его. Это даст нам добавление в $.validationEngineLanguage.newLang() нужного вида регулярки, которую можно будет использовать в дальнейшем.

2. Для поля my_field оставляем проверку на длину и вешаем на него проверку на регулярку.

3. У поля my_field добавляем класс validate[ajax[availability_my_field_regex]]

4. У поля my_field_regex создаем Conditional States вида: This field is Filled by my_field WHEN my_field is Change

И все работает :)
Think different / Tastes differ
Администратор запретил публиковать записи гостям.
Модераторы: KKAAZZOO

roundtheme