jquery验证onclick

时间:2012-02-03 12:59:07

标签: jquery jquery-validate

我的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,但我不明白为什么?我使用了validate插件多年,但没有在这种情况下使用。

4 个答案:

答案 0 :(得分:7)

如果您有链接并需要验证表单。 此功能也会转到UI选项卡中的下一个选项卡,使用每个选项卡中的表单验证每个选项卡。

$('.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;
    }
});

答案 1 :(得分:5)

现在解决了。现在验证器做了我想要的。下面的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 
      } 
   }); 
});

答案 2 :(得分:4)

您正在尝试将事件附加到尚未呈现的元素

你必须使用onDOM ready

$(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代码,read it

答案 3 :(得分:3)

您需要将验证放在“准备好文档”

$(document).ready(function(){
    $('#form').validate();
});