Еще одна проблема / вопрос с проверкой jQuery на главной странице

#jquery #asp.net #master-pages

#jquery #asp.net #мастер-страницы

Вопрос:

Я искал в Интернете, чтобы попытаться узнать, чего мне не хватает, но, похоже, я просто не могу этого понять. Я использую asp.net 4.0 (очевидно, веб-формы), главные страницы и проверка jQuery. Может кто-нибудь сказать мне, что я путаю?

В моем случае я ничего не буду знать о полях, требующих проверки, поэтому я хотел бы использовать метод по умолчанию, просто имея поля с class =»required email» и т.д.

Поля и кнопка отправки являются обычным html, не ASP.NET элементы управления (длинная история). При отображении страницы отображается форма «form1», а не aspnetForm, как я видел, ссылаются другие люди. При нажатии кнопки отправки не отображается ни один из javascript. Он просто отправляет ответ. Это даже не всплывает окно предупреждения.

На что я неправильно ссылаюсь?

Вот мой простой javascript:

       $(document).ready(function () {
      alert('in js');
      document.getElementById('form1').validate({
          alert('in val');
      });
  

Содержимое страницы:

  <fieldset>
   <legend>A simple comment form with submit validation and default messages</legend>
   <p>
     <label for="cname">Name</label>
     <em>*</em><input id="cname" name="name" size="25" class="required" minlength="2" />
   </p>
   <p>
     <label for="cemail">E-Mail</label>
     <em>*</em><input id="cemail" name="email" size="25"  class="required email" />
   </p>
   <p>
     <label for="curl">URL</label>
     <em>  </em><input id="curl" name="url" size="25"  class="url" value="" />
   </p>
   <p>
     <label for="ccomment">Your comment</label>
     <em>*</em><textarea id="ccomment" name="comment" cols="22"  class="required"></textarea>
   </p>
   <p>
     <input name="btnsubmit" id="btnsubmit" class="submit" type="submit" value="Submit"/>
   </p>
 </fieldset>
  

Ответ №1:

Вы должны правильно закрыть свои функции и фигурные скобки. Более серьезная проблема заключается в том, что вы должны ссылаться не на собственный объект DOM, а на объект jQuery. Ваш код должен быть:

 $(document).ready(function(){
   alert('in js');
   $('#form1').validate({
      alert('in val');
   });
});
  

Ваша готовая функция также может быть сокращена до $(function(){...}); для простоты.

Ответ №2:

Asp.net на странице будет размещена только одна форма, поэтому используйте $ («form»), чтобы найти ее, не зная id. Кроме того, параметры проверки не будут принимать предупреждение в том виде, в каком оно у вас есть, но вы можете переместить его в правильные обработчики, как я сделал ниже. Надеюсь, это поможет…

 $(function () {
    $("form").validate({
        submitHandler: function () {
            alert("submiting...");
            return false;
        },
        invalidHandler: function () {
            alert("invalid form");
            return false;
        }
    });
});
  

Ответ №3:

Вы должны передать объект jquery для плагина validate. Вы пытаетесь передать объект DOM для проверки плагина, что, очевидно, не сработает.

Поэтому замените document.getElementById('form1') на $('#form1') .

Теперь валидация будет происходить плавно.

Ответ №4:

Вы используете необработанный JS для ссылки на форму, а подключаемому модулю .validate необходим объект jQuery. Попробуйте это вместо:

 $(document).ready(function () {
  alert('in js');
  $('form').validate({
    alert('in val');
  });