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

17

Я использую плагин проверки 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" />

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

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

    
задан jack 29.04.2010 в 17:46
источник

8 ответов

5

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

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

ответ дан jack 13.05.2010 в 10:10
источник
18

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

jQuery.validator.addMethod("defaultInvalid", function(value, element) 
{
    return !(element.value == element.defaultValue);
});
    
ответ дан Peter van den Broek 17.02.2012 в 15:04
источник
  • Или просто верните! (element.value == element.defaultvalue); –  AntonioCS 29.11.2011 в 18:13
  • Для новых пользователей этой темы замените приведенный выше ответ на принятый ответ соответственно, строки 4-12. Отличные ребята. –  deflime 09.10.2013 в 01:49
2

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

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;
    }
});
    
ответ дан Peter 20.12.2011 в 02:01
источник
2

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

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
    return !(element.value == element.defaultValue);
}, 'Custom Error Message for this field');
    
ответ дан Erik Larsson 24.02.2012 в 10:24
источник
  • Спасибо ... точно, что я искал! –  brainondev 25.05.2012 в 16:51
1

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

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

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

    
ответ дан krsoni 16.01.2015 в 21:50
источник
0

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

jQuery.validator.addMethod("defaultInvalid", function(value, element) {
        switch (element.value) {
          case "$defaultText":
              if (element.name == "$defaultText")
                  return false;
              break;
          default:
            return true;
            break;
        }
});
    
ответ дан user595562 26.05.2011 в 18:27
источник
0
$.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')
            }
        }

Такая функция учитывает случаи «обязательного» и amp; «Необязательные» поля.

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

    
ответ дан Igor 15.08.2011 в 12:26
источник
0

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

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

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

jquery.validationEngine.js Патч

jquery.validationEngine-ru.js Патч

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

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

Panthera Dental

    
ответ дан user1296558 17.10.2012 в 16:52
источник