2013-11-27 3 views
-1

Я следующий Javascript работает на моей странице:jQuery.validate: нет обработчиков не увольняют

$("form").validate({ 
    invalidHandler: function (event, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) { 
      console.log(errors); 
     } 
     validator.focusInvalid(); 
    }, 
    showErrors: function (errorMap, errorList) { 
     console.dir(errorList); 
    }, 
    submitHandler: function (form) { 
     console.log(form); 
    } 
}); 
$("form").valid(); 

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

Моя проблема заключается в том, что ни один из этих обработчиков внутри объекта опций, передаваемый в .validate(), не будет запущен; ни одно из сообщений консоли никогда не регистрируется.

Подтверждение действительно работает, недопустимые поля украшены классом CSS.

Итак, если проверка выполняется, почему эти события не работают?

EDIT:

Сказать < форма > элемент долго будет преуменьшение. Однако при построении/тестировании только три элемента < содержат required атрибут. Кроме того, поскольку я отправляю асинхронно, а не отправляю, элемент < формы > не имеет заполненного атрибута action. Цитата

<form action="" name="order" id="order" class="margin-b-50"> 

    <label for="frm-order-name">Order Name</label> 
    <input type="text" id="frm-order-name" name="frm-order-name" class="form-control" required="required" data-val-required="You must enter an order name" /> 

    <label for="frm-username">Username</label> 
    <input type="text" id="frm-username" name="frm-username" class="form-control" required="required" data-val-required="You must enter your username" /> 

    <label for="frm-password">Password</label> 
    <input type="password" id="frm-password" name="frm-password" class="form-control" required="required" data-val-required="You must enter your password" /> 
</form> 

ответ

0

OP:.

«Моя проблема в том, что ни один из этих обработчиков внутри вариантов не объект передается в .validate() будет работать, ни один из консольных сообщений не всегда регистрируются Валидация работает, недопустимые поля украшены классом CSS. Поэтому, если проверка выполняется, почему эти события не работают? "

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

Поддерживает ли браузер браузер console.log и console.dir?

Этот вариант работает нормально для меня ...

$(document).ready(function() { 

    $('#order').validate({ 
     invalidHandler: function (event, validator) { 
      var errors = validator.numberOfInvalids(); 
      alert('invalidHandler fired - no of errors: ' + errors); 
      console.log('invalidHandler fired - no of errors: ' + errors); 
      validator.focusInvalid(); 
     }, 
     showErrors: function (errorMap, errorList) { 
      console.log('showErrors fired'); 
      console.dir(errorList); 
     }, 
     submitHandler: function (form) { 
      alert('submitHandler fired - form is valid'); 
      console.log('submitHandler fired - form is valid'); 
      return false; 
     } 
    }); 

    $('#order').valid(); 

}); 

DEMO: http://jsfiddle.net/B5N6q/

И это ваша версия, также работает для меня: http://jsfiddle.net/B5N6q/1/

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