2013-07-31 7 views
-1

Я использую плагин jQuery Validate, и то, что я пытаюсь сделать, должно быть относительно простым, но я не могу заставить его работать.jQuery Подтвердить плагин - не оценивать пустые поля

У меня есть поле input, которое не является обязательным/обязательным для заполнения. Если в поле ничего не введено, я не хочу запускать какую-либо форму проверки в поле. Если поле формы изменяется и содержит любой ввод, я хочу его проверить, например, только цифры, но если поле пустое, удалите/не подтвердите.

Я пытался сделать что-то вроде этого:

valForm('excessFrm'); 

var vou = $('input[name="voucher"]'); 

vou.blur(function(){ 
    if($(this).val() == ''){ 
    ("#voucher").rules("remove"); 
    } else { 
    ("#voucher").rules("add", { 
     number: true 
    }); 
    } 
}) 

Но независимо от того, где я положил это в моем коде я получаю эту ошибку:

Uncaught TypeError: Object #voucher has no method 'rules' 

Хотя я уверен, что validate() объект был запущен, функция valForm() вызывает объект проверки и устанавливает все мои правила по умолчанию и т. д.

Может ли кто-нибудь предложить слова мудрость, пожалуйста?

+0

Вы уверены, что используете правильность в правиле? См. Этот образец источника http://www.codeproject.com/Articles/213138/An-Example-to-Use-jQuery-Validation-Plugin – Akki619

+0

Да. Другие поля в форме подтверждают ok. Я просто думаю, может быть, проверка не создается, прежде чем будет применена функция .blur. Поэтому объект validat не существует. Вы знаете, что у плагина validate был обратный вызов? –

+0

не знаю, приятель .... может у попробовать с событием onfocusout. Смотрите здесь скрипку http://jsfiddle.net/tigerfinch/J8DvX/8/ – Akki619

ответ

3

Цитата OP:

I've got an input field that is not a mandatory/required field. If nothing is entered into the field I don't want to run any form of validation on the field. If the form field changes and contains any input I want to validate it against, for example, numbers only, but if the field is blank, remove/don't validate.

Вы только что описали ожидаемое нормальное поведение любого программного обеспечения для проверки формы, в том числе плагин JQuery Validate.

Вам не нужен специальный обработчик события blur, потому что плагин выполняет проверку, инициированную параметром onfocusout, который включен по умолчанию.

Нет необходимости добавлять & правила, используя метод rules(), потому что плагин по умолчанию не будет оценивать правила в пустом поле. (Конечно, единственным исключением является required правило, которое, по определению, относится только к пустому полю.)

Удалить код и начать с чем-то более, как это ...

HTML:

<form id="myform"> 
    <input type="text" name="voucher" /> 
    <input type="submit" /> 
</form> 

JQuery:

$(document).ready(function() { 

    $('#myform').validate({ 
     rules: { 
      voucher: { 
       number: true 
      } 
     } 
    }); 

}); 

Рабочая DEMO: http://jsfiddle.net/HBfJB/

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

1

У меня было такое же требование, как вы ... Так что я использовал этот код (получил от isNullorWhitespace in javascript)

function isNullOrWhitespace(input) { 
    if (typeof input === 'undefined' || input == null) 
     return true; 
    return input.replace(/\s/g, '').length < 1; 
} 

Затем, перед использованием JQuery.Validator настроить его:

jQuery.validator.addMethod("validateNullOrWhiteSpace", function (value, element) {   
    return !isNullOrWhitespace(value); 
}, "Blanks are not allowed!"); 

После этого, просто добавьте его пользовательское правило (в моем случае я использую addClassRules):

jQuery.validator.addClassRules("emailUserClass", {    
     email: true, 
     validateNullOrWhiteSpace: true 
    }); 

Надеется, что это помогает

* Для получения дополнительной информации посетите http://jqueryvalidation.org/jQuery.validator.addMethod/

Смежные вопросы