2011-09-16 38 views
5

我正在使用jQuery验证来验证输入。 我的代码:使用验证器验证表单的Click事件jQuery

$('#button').click(function() {  
    $("#form").validate({    
     rules: { 
      phone: { 
       required: true, 
       number: true, 
       rangelength: [7, 14] 
      } 
     } 
    }); 
}); 

和HTML:

<form id="form" name="form" method="post" action=""> 
<input id="phone" name="phone" class="required" type="text" /> 
<div class="button" id="send_b">Send</div> 
</form> 

此代码不能正常工作。如果我添加这行jQuery

$("#form").submit(); 

里面的点击事件的作品。但我不想提交表单,所以我只想对点击进行验证。

有谁知道如何做到这一点?

+0

提供有关“不能工作”的更多详细信息。你期望它做什么不是? – BishopRook

+0

IIRC'validate()'不*做验证,它*设置*验证提交。打开代码来查看它是否可以短路,或者是否有可以调用的方法实际上只是验证。 –

回答

13

只需添加.form()立即手动触发验证(默认行为等待提交事件):

$('#button').click(function() {  
    $("#form").validate({    
    rules: { 
     phone: { 
     required: true, 
     number: true, 
     rangelength: [7, 14] 
     } 
    } 
    }).form(); 
}); 
+0

酷!有用!非常感谢! – novellino

0

您的代码的功能结合到click事件按钮。你在做什么是说“当这个按钮被点击时,将表单验证应用到表单中”。

这是使用验证插件的错误方式(我假设您使用的是this验证插件)。相反,您只需将validation()方法直接执行到form元素上;该插件负责处理submit事件。

所以,摆脱click事件绑定。

+0

我刚刚遇到一个问题,我正在验证单个输入框,并且该值是链接的参数。但我认为你是对的,它会自动验证onclick。 – yardpenalty

0

使用表单方法form()使用您的点击事件的方法