Подтвердить что ты не робот

Jquery.validation - как игнорировать значения по умолчанию при проверке обязательных полей

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

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

ex: для поля ввода текста id = 'Name', значение по умолчанию будет установлено на "Enter Your Name". Я вставил ниже пример кода:

<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" />

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

Помогите оценить.

4b9b3361

Ответ 1

Я решил решить проблему, создав специальную проверку с помощью 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

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

jQuery.validator.addMethod("defaultInvalid", function(value, element) 
{
    return !(element.value == element.defaultValue);
});

Ответ 3

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

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;
    }
});

Ответ 4

Если вы хотите добавить к нему специальное сообщение об ошибке jus tuse this.

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
    return !(element.value == element.defaultValue);
}, 'Custom Error Message for this field');

Ответ 5

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

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

и все будет в порядке.

Ответ 6

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

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
        switch (element.value) {
          case "$defaultText":
              if (element.name == "$defaultText")
                  return false;
              break;
          default:
            return true;
            break;
        }
});

Ответ 7

$.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)", потому что в некоторых случаях я получаю сообщение об ошибке "несоответствие зависимостей".

Ответ 8

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

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

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

jquery.validationEngine.js Патч

jquery.validationEngine-en.js Патч

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

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

Panthera Dental