button单击jQuery表单validation
我有一个简单的页面,在窗体外面有一个窗体和一个button。 我试图validationbutton单击窗体上。 我已经添加了document.onready函数的表单validation规则。 但是表单没有得到validation。
HTML: –
<html> <head> <script src="lib/jquery1.5.2.js"></script> <script src="lib/jquery.validate.js"></script> <script src="lib/myjs.js"></script> </head> <body> <form id="form1" name="form1"> Field 1: <input id="field1" type="text" class="required"> </form> <div> <input id="btn" type="button" value="Validate"> </div> </body> </html>
JS: –
$(document).ready(function(){ $("#form1").validate({ rules: { field1: "required" }, messages: { field1: "Please specify your name" } }) $('#btn').click(function() { $("#form1").validate(); // This is not working and is not validating the form }); });
任何想法有什么不对?
在你的click
处理程序中,错误是.validate()
方法; 它只初始化插件,它不validationform
。
为了消除在form
submit
button的需要,使用.valid()
来触发validation检查…
$('#btn').on('click', function() { $("#form1").valid(); });
jsFiddle演示
.validate()
– 在DOM准备好的时候初始化插件(带有选项)。
.valid()
– 检查validation状态(布尔值)或在任何时候触发form
上的validationtesting。
否则,如果您在form
容器中有一个type="submit"
button,则不需要特殊的click
处理程序和.valid()
方法,因为该插件会自动捕获该方法。
演示无需click
处理程序
编辑 :
你的HTML中也有两个问题
<input id="field1" type="text" class="required">
-
在
.validate()
声明规则时,不需要class="required"
。 这是多余的和多余的。 -
name
属性丢失。 规则是通过name
在.validate()
中声明的。 该插件依赖于唯一的name
属性来跟踪input。
应该…
<input name="field1" id="field1" type="text" />
$(document).ready(function() { $("#form1").validate({ rules: { field1: "required" }, messages: { field1: "Please specify your name" } }) }); <form id="form1" name="form1"> Field 1: <input id="field1" type="text" class="required"> <input id="btn" type="submit" value="Validate"> </form>
你也是使用type =“button”。 而我不知道为什么你应该分开提交button,把它放在窗体中。 这样做更合适。 这应该工作。