jQuery Validator Plug In - запуск из функции - PullRequest
0 голосов
/ 29 февраля 2012

У меня проблемы с проверкой длинной формы, которая загружается через AJAX после загрузки документа. Используя стандартный синтаксис проверки, валидатор ищет мою форму в документе до того, как она существует, и поэтому выдает ошибку:

$(document).ready(function(){
   $("#mainForm").validate();
});

firebug отвечает:

nothing selected, can't validate, returning nothing

Я попытался поместить $("mainForm").validate(); в функцию, а затем вызвать функцию с событием onSubmit из формы, но безуспешно:

function validate() {
  $("mainForm").validate();
};

----------

<form id="mainForm" onSubmit="validate();">
   ...
</form>

Мысли


Дополнительная информация для @Chris:

У меня есть страница, которая динамически создает форму, основанную на множестве различных модулей. Пользователь выбирает модули, которые применяются к ним, затем форма обновляется с этой информацией для заполнения. Поэтому, когда пользователь щелкает ссылку для загрузки модуля, вызывается функция loadSection();. Вот как выглядит функция loadSection();:

function loadSection(id, div, size, frame) {
  var url = "loadSection.php?id=" + id + "&size=" + size + "$frame=" + frame;
  $.get(url,
    function(data){
      $(div).append(data);
    });
}

Если я поставлю `$ (# mainForm) .validate (); ' в обратном вызове этой функции она может вызываться каждый раз, когда вставляется новый модуль. Это может быть хорошо, а может и плохо, я не уверен, как будет проходить проверка для многократного вызова в одной и той же форме, даже если поля формы изменились.

Мысли

Ответы [ 3 ]

1 голос
/ 29 февраля 2012

Вероятно, вы правильно поняли проблему.Если форма не существует в DOM в document.ready (), то ничто не будет связано.

Так как вы используете JQuery, я предполагаю, что форма добавлена ​​с использованием jquery $ .ajaxаналогичная) функция.Наиболее простым решением было бы просто добавить $("#mainForm").validate(); к функции обратного вызова запроса AJAX.Если вы не используете JQUery ajax, опубликуйте код, который добавляет форму, и мы поможем вам в дальнейшем.

0 голосов
/ 29 февраля 2012

Простая ошибка в селекторе "mainform" не является допустимым селектором.Добавьте префикс "#", если это ID

РЕДАКТИРОВАТЬ: Также обратите внимание, что у вас есть еще один действительный вызов действующий, удалите этот

0 голосов
/ 29 февраля 2012

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

например, если вы хотите подтвердить адрес электронной почты:

   <p>
     <label for="cemail">E-Mail</label>
     <em>*</em><input id="cemail" name="email" size="25"  class="required email" />
   </p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...