aji*_*nmu 44 jquery jquery-validate
我有一个简单的页面,表单和窗体外的按钮.我试图在按钮单击上验证表单.我已经在document.onready函数中添加了表单验证规则.但是表单未经过验证.
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>
Run Code Online (Sandbox Code Playgroud)
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
});
});
Run Code Online (Sandbox Code Playgroud)
知道什么是错的吗?
Spa*_*rky 119
在你的click处理程序中,错误就是.validate()方法; 它只初始化插件,它不验证form.
为了消除在其中的submit按钮的需要form,用于.valid()触发验证检查...
$('#btn').on('click', function() {
$("#form1").valid();
});
Run Code Online (Sandbox Code Playgroud)
.validate()- 在DOM就绪时初始化插件(带选项)一次.
.valid()- 检查验证状态(布尔值)或随时触发验证测试form.
否则,如果容器中有一个type="submit"按钮,则form不需要特殊的click处理程序和.valid()方法,因为插件会自动捕获它.
编辑:
您的HTML中还有两个问题...
<input id="field1" type="text" class="required">
Run Code Online (Sandbox Code Playgroud)
class="required"在声明规则时你不需要.validate().这是多余的,多余的.
该name属性缺失.规则.validate()由他们声明name.该插件依赖于唯一name属性来跟踪输入.
应该...
<input name="field1" id="field1" type="text" />
Run Code Online (Sandbox Code Playgroud)