Валидатор инструментов jQuery: не требуется, но проверьте, не пуст ли он

Я использую валидатор из jQuery Tools для проверки моей формы (почему инструменты jquery? Потому что они легкие и использовать семантические теги HTML5, типы ввода и параметры для проверки), но у меня есть одна проблема: я хочу, чтобы jQuery Tools Validator тестировал / проверял поле ввода только в том случае, если оно не пустое, но это поле не требуется.

В полях, которые должны быть протестированы / проверены, я могу использовать required="required", и он проверяет ... теперь у меня есть поле ввода текста, где пользователь может ввести URL-адрес, это поле не требуется, НО если пользователь добавляет некоторые данные в это поле , поле должно проверяться с помощью pattern="https?://.+", чтобы убедиться, что пользователь вводит действительный URL-адрес ... если я добавлю параметр шаблона и не обязательный параметр, jQuery Tools Validator тем не менее проверяет / проверяет, и я не могу отправить до тех пор, пока я не введу действительный URL-адрес - даже если я вообще не хочу вводить URL-адрес!


person albuvee    schedule 19.10.2011    source источник


Ответы (3)


Вы можете попробовать изменить свое регулярное выражение, чтобы разрешить пустую строку, например

pattern="^(?:|https?://.+)$"
person airportyh    schedule 19.10.2011
comment
Ага! Спасибо! btw: jQuery Tools Validator не поддерживает ^ и $, их «включенные»… так что шаблон = (?: | https?: //.+) работает! Спасибо, Тоби! - person albuvee; 21.10.2011

Есть ли причина, по которой вы привязаны к валидатору инструментов jquery? У меня был большой успех: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

Так, например, я бы добавил настраиваемое поле валидатора jQuery:

jQuery.validator.addMethod("unittype", function(value, element) { 
    return jQuery('#fuel option:selected').val() in unitOptions && value in unitOptions[jQuery('#fuel option:selected').val()];
});

jQuery('#fuel').rules("add", {
    fueltype:true,
    messages:{
        fueltype:"Please select a fuel type"    
    }
});

Это был всего лишь пример из моего кода, просто замените регулярное выражение в метод.

person Peter Brooks    schedule 19.10.2011
comment
спасибо… Я выбрал валидатор, потому что он легкий, он имеет расширенные возможности css, он использует стандартные типы ввода html5 для общей проверки… и его легко использовать. :-) но спасибо! - person albuvee; 21.10.2011

Если вы укажете поле формы как

<input type='url'/>

тогда jQuery Tools Validator потребует действительный URL-адрес - вам не нужно создавать собственное регулярное выражение URL-адреса.

И если вы не отметите это поле как обязательное, то валидатор должен проверять поле только тогда, когда оно не пустое; что, если я правильно понял, является поведением, которое вы (OP) хотите.

person ron rothman    schedule 23.03.2012