JQuery проверки по клику - PullRequest
       7

JQuery проверки по клику

5 голосов
/ 03 февраля 2012

У меня проблема с плагином jquery validate, которая не имеет смысла для меня. Пожалуйста, кто-нибудь может увидеть, где моя ошибка?

Вот мой HTML:

<form id="form">
   <input type="text" name="name" class="required" />
   <input type="text" name="email" class="required email" />
</form>
<a id="link">Save</a>

Вот мой JS

<script src="jquery 1.7.1"></script>
<script src="jquery.validate.1.9"></script>
<script>
    $('#link').click(function()
    {
        $('#form').validate();
        if ($('#form').valid()) // check if form is valid
        {
            // do some stuff
        }
        else 
        {
            // just show validation errors, dont post
        }
    });

</script>

Форма никогда не проверяется или, по крайней мере, функция .valid() всегда возвращает true, но я не понимаю, почему? Я использовал плагин проверки в течение многих лет, но не в этом контексте.

Ответы [ 4 ]

7 голосов
/ 01 ноября 2012

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

$('.next-tab').click(function() { 
    //if form is valid
    if ($("#frmSignup").valid()) {
        //activate next tab
        $('#signuptabs').tabs('enable', $(this).attr("rel"));
        //switch to next tab
        $tabs.tabs('select', $(this).attr("rel"));
        return false;
    }
});
5 голосов
/ 10 февраля 2012

Решено пока. Теперь валидатор делает то, что я хочу. JS ниже, тот же HTML:

$(function() 
{ 
   $('#link').click(function() 
   { 
      if ($("input[name=name]").valid() && $("input[name=email]").valid()) 
      { 
         // do some stuff 
      } 
      else 
      { 
         // just show validation errors, dont post 
      } 
   }); 
});
4 голосов
/ 03 февраля 2012

Вы пытаетесь прикрепить событие к элементу, который еще не отображается

вы должны использовать onDOM готов

$(function() {
     $('#link').click(function(){
        $('#form').validate();
        if ($('#form').valid()) // check if form is valid
        {
            // do some stuff
        }
        else 
        {
            // just show validation errors, dont post
        }
    });
});

$(functionHandler) == $(document).ready(functionHandler);

Правило № 1 : Всегда думайте, если DOM должен быть обработан перед тем фрагментом кода, который вы пишете, это самая распространенная ошибка на этом сайте ...

Этот совет и многое другое вы можете прочитать по тегу jquery на этом сайте, прочитать его

3 голосов
/ 03 февраля 2012

Вы должны поместить подтверждение в готовый документ

$(document).ready(function(){
    $('#form').validate();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...