barbitoff programmer`s blog

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

среда, 25 июля 2012 г.

Плагин jquery.validation и элементы формы с одинаковыми именами

Плагин  jquery.validation не умеет работать с элементами с одинаковыми именами. Использование одинаковых имен ведет, во-первых, к тому, что валидируется только первый элемент, ну и, во-вторых, ко всяким глюкам с неверным позиционированием сообщения об ошибке и пр. Всякие костыли (например, http://www.codeboss.in/web-funda/2009/05/27/jquery-validation-for-array-of-input-elements/) работают лишь частично (например, элемент начинает вроде бы валидироваться, но сообщение об ошибке все равно у всех одноименных элементов одно на всех). Поправить эту ситуацию изменением пары строк в исходниках не получится - слишком многое в них завязано на имена элементов. Поэтому остается лишь ходить обходными путями, например, назначать элементам уникальные имена и преобразовывать их при отправке провалидированной формы в обработчике, назначенном параметром "submitHandler" в вызове validate().

четверг, 19 апреля 2012 г.

Валидация ip-v4 адресов на jquery-input-ip-address-control и jquery.validation

1) Подключаем нужные скрипты (качаются тут и тут):
<script type="text/javascript" src="js/jquery.validate.min.js"></script>
<script type="text/javascript" src="js/jquery.input-ip-address-control-1.0.min.js"></script>   
2) Добавляем скрипт:
$(document).ready(function(){
    jQuery.validator.addMethod("ipv4",function(value, element)
{
return this.optional(element) || value!="___.___.___.___";
});
  jQuery.validator.addClassRules("ip-address-input",{ipv4:true});                                  
    $("#myFormId").validate(
{
errorPlacement: function(error, element){} // no error messages        
});
    $('input.ip-address-input').ipAddress({v:4});  
  }); 
Этот скрипт включит валидацию для формы #myFormId (про неё я уже писал тут), а также обеспечивает все поля ввода с классом "ip-address-input" маской для ввода ip-v4 адреса. В случае, если у такого поля ввода установлен также класс "required", форма не отправится, если в поле не введен корректный ip-v4 адрес (в функции-валидаторе значение проверяется только на неравенство "___.___.___.___", т.к.  jquery-input-ip-address-control не даст ввести в поле некорректный ip-v4) . Пример такого поля ввода:
<input type="text" class="ip-address-input required" name="ip_1" />
Также, чтобы незаполненные поля подсвечивались красной рамкой, нужно добавить css:
.error
{
  border-color: red;
}