Сброс формы при использовании плагина проверки jquery

У меня есть простая форма, как показано ниже, в которую я добавил плагин проверки jQuery (http://docs.jquery.com/Plugins/ValidatioP). У меня есть эта форма в модальном всплывающем окне, поэтому, если есть ошибки, и пользователь закрывает окно, когда снова открывает его, в форме все еще есть ошибки. В моем обратном вызове закрытия всплывающего окна я попытался вызвать resetForm(), но он говорит, что метод не существует.

HTML-форма:

 <form class="validations" id="commentForm" method="get" action="">
   <p>
     <label for="name">Name</label>
     <em>*</em><input id="name" name="name" size="25" class="required" minlength="2" />
   </p>
   <p>
     <label for="email">E-Mail</label>
     <em>*</em><input id="email" name="email" size="25"  class="required email" />
   </p>
 </form>

Обратный вызов закрытия всплывающего окна:

function(){
  $(this).find('form.validations').resetForm();
}

Заранее спасибо за помощь.


person John Duff    schedule 13.01.2010    source источник
comment
Я не смог проголосовать за тебя, Джон, но твой ответ был самым приятным! Я сделал, как описано, и это сработало для меня. В качестве комментария я заметил, что в jQuery есть $.validator, но у него нет метода resetForm(). И проверка не возвращает валидатор. Доказательством является то, что возвращаемый объект не имеет метода, который есть у $.validator. Я нахожу это немного странным, но, вероятно, это цена работы на более высоком уровне jQuery (вместо js).   -  person Paul Pacurar    schedule 17.11.2010


Ответы (2)


resetForm является частью объекта, возвращаемого методом проверки, а не формы. Пример:

var validate = $('#commentForm').validate({ ... });
// Later...
validate.resetForm();
// Or if variable scope is in the way...
$('#commentForm').data('validator').resetForm();

Плагин проверки хранит ссылку на объект проверки в хранилище данных формы.

person CalebD    schedule 13.01.2010
comment
Что вы имеете в виду, что переменная область видимости мешает, вы не можете избавиться от переменной и просто сделать $('#commentForm').validate().resetForm()? Обратите внимание, что .validate() просто вернет .data('validator'), если валидатор уже был инициализирован. - person THX-1138; 13.07.2014

Если это действительно короткая форма с несколькими элементами, вы можете просто сбросить их вручную, когда нажимается кнопка закрытия в модальном окне, например:

$("input[name='formelementName']").val("");

person Nate B    schedule 13.01.2010