Подключаемый модуль валидатора jQuery: проверьте необязательное поле - PullRequest
8 голосов
/ 20 августа 2010

Проблема Я хочу проверить поле с помощью созданного мной пользовательского валидатора, который по сути является регулярным выражением только для номера телефона, ЕСЛИ поле имеет значение, в противном случае его не нужно проверять, потому чтоэто необязательно.

Пользовательский валидатор:

   $.validator.addMethod('phone', function (value) {
       return /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value);
   }, 'Please enter a valid US phone number.');

Правила:

 phone: {
  required: true,
  phone: true
 },
 fax: {
  phone: true
 }

Я даже пробовал:

 phone: {
  required: true,
  phone: true
 },
 fax: {
  required: function(element){
   if (!$("#cf-fax").val()) { return true; } else { return false; }
  }
  phone: true
 }

Для справкиэто поле, на которое я пытаюсь ссылаться:

<input type="text" name="fax" class="optional" size="15" maxlength="14" id="cf-fax" />

Любая помощь приветствуется, потому что я просто потерян.= \

1 Ответ

13 голосов
/ 20 августа 2010

Вы можете вызвать .optional() (определен внутри плагина валидации) следующим образом:

$.validator.addMethod('phone', function (value, element) {
   return this.optional(element) || /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value);
}, 'Please enter a valid US phone number.');

Это стандартная схема для плагина валидации, посмотрите их дополнительные методы здесь для примеров.

...