jquery.validation - как игнорировать значения по умолчанию при проверке обязательных полей - PullRequest
17 голосов
/ 29 апреля 2010

Я использую плагин проверки jquery для проверки регистрационной формы.

В каждом поле ввода текста есть инструкции, предварительно заполненные в виде значений в поле ввода

Например: для поля ввода текста id = «Имя», значением по умолчанию будет «Ввести ваше имя». Я вставил ниже образец кода:

<input type="text" id="Name" value="Enter Your Name" onfocus="if(this.value == 'Your Name'){this.value = '';}" type="text" class="required" onblur="if(this.value == ''){this.value='Your Name';}" size="25" />

Что мне нужно знать, так это как указать в правиле проверки, чтобы плагин выдавал обязательное поле с ошибкой, если поле ввода содержит либо сообщение по умолчанию, либо пустые значения.

Помощь очень ценится.

Ответы [ 8 ]

19 голосов
/ 10 июня 2011

Я думаю, что это лучше:

jQuery.validator.addMethod("defaultInvalid", function(value, element) 
{
    return !(element.value == element.defaultValue);
});
5 голосов
/ 07 мая 2010

Я нашел способ обойти эту проблему, создав собственную проверку с использованием validator.addMethod, что действительно просто.

Я вставил фрагмент моего блока проверки ниже:

   //1. Define custom validation 
    $(document).ready(function() 
    {
    jQuery.validator.addMethod("defaultInvalid", function(value, element) 
    {
     switch (element.value) 
     {
      case "Your Name": -- this will be the default value in the Name text box
       if (element.name == "Your Name")
          return false;
     }
    }
    //2. Include custom validation in the rules for your element
    $("#aspnetForm").validate(
    {
      rules: 
      {
       Name: "required defaultInvalid"
      },
      messages: 
      {
       Name: "Please input your name"
      }
    })
   }

Я использовал то же самое для всех элементов, которые имеют значения по умолчанию в форме. Это прекрасно работает.

2 голосов
/ 24 февраля 2012

Если вы хотите добавить собственное сообщение об ошибке, просто используйте это.

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
    return !(element.value == element.defaultValue);
}, 'Custom Error Message for this field');
2 голосов
/ 18 января 2011

для меня вышеописанное работало только со следующими изменениями:

jQuery.validator.addMethod("defaultInvalid", function(value, element) 
{
    switch (element.value) 
    {
        case "Your Name":
            if (element.name == "element_name") return false;
            break;
        default: return true; 
            break;
    }
});
1 голос
/ 16 января 2015

просто добавьте это после секции правил

onfocusout: function(element) { $(element).valid(); }

и все будет хорошо.

0 голосов
/ 17 октября 2012

Я сделал некоторый патч для jquery.validationEngine, чтобы позволить игнорировать некоторые поля ввода для некоторой сложной формы. Я сделал следующие изменения:

  • Добавление поддержки для jquery.dropkick выбора позиции проверки скинов
  • Добавить недопустимое поле выбора для ввода значения ve_invalid (чтобы можно было отображать директиву, если она не является допустимым выбором)
  • Добавить hideAllInstant, чтобы удалить проверку без задержки
  • Добавить поддержку для элемента jquery.simpleImageCheck, если исходный ввод скрыт, вместо него использовать местоположение simpleImageCheck
  • Добавить класс skipValidate, чтобы избежать проверки некоторых полей без их отключения
  • Исправлена ​​ошибка, когда совпадение с prompt_err не определено, в месте назначения возникла ошибка
  • добавить поддержку clearField, чтобы избежать проверки jquery.clearField.js
  • добавить validateHiddenFields, проверка правильности скрытого и не скрытого поля

В вашем случае вы можете использовать модификацию для класса skipValidate, чтобы выполнить это. Вы можете найти пропатченный скрипт здесь вместе с английским фильтром (также доступен один):

jquery.validationEngine.js Исправлено

jquery.validationEngine-en.js исправлено

Я должен отправить эти изменения в git hub, но у меня не было времени сделать это прямо сейчас.

Джером Годбоу

Panthera Dental

0 голосов
/ 15 августа 2011
$.validator.addMethod("defaultInvalid", function(value, element, param){
        var r = $(element).rules();
        var req=(this.objectLength(r))?r.required:false; // OR may be var req=r.required; // true, false or undefined.
        return !req || (value!=param);
    },$.validator.messages.required);

...

,rules:{
            message: {
                defaultInvalid:$('#message').attr('placeholder')
            }
        }

Такая функция учитывает случаи "обязательных" и "необязательных" полей.

Выражение «! Req» намеренно заменяет «this.optional (element)», поскольку в некоторых случаях я получаю сообщение об ошибке «несоответствие зависимостей».

0 голосов
/ 26 мая 2011

Я думаю, вам нужно добавить регистр "по умолчанию", чтобы это работало правильно:

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
        switch (element.value) {
          case "$defaultText":
              if (element.name == "$defaultText")
                  return false;
              break;
          default:
            return true;
            break;
        }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...