jQuery验证在提交事件时未正确验证
jQuery validation not validating proper on submit event
我使用的是jQuery验证插件,已经使用过很多次表单验证,但第一次遇到这个问题,不明白为什么不进行验证。
问题:当我第一次点击提交按钮时,表单验证不出现,但当我第二次点击时,会显示验证消息。
jQuery代码:
$(document).ready(function() {
$(document.body).on('submit', 'form#register-form', function(event) {
event.preventDefault();
$("#register-form").validate({
// Specify the validation rules
rules : {
firstname : "required",
lastname : "required"
},
// Specify the validation error messages
messages : {
firstname : "Please enter your first name",
lastname : "Please enter your last name"
}
});
});
});
HTML代码:
<h1>Register here</h1>
<form action="#" method="post" id="register-form">
<div class="label">
First Name
</div>
<input type="text" id="firstname" name="firstname" />
<br />
<div class="label">
Last Name
</div>
<input type="text" id="lastname" name="lastname" />
<br />
<div style="margin-left:140px;">
<input type="submit" name="submit" value="Submit" />
</div>
</form>
JSFiddle:http://jsfiddle.net/mananpatel/68vgh7x1/1/
知道我哪里做错了吗。
在您的情况下,只有在完成第一次提交时才初始化验证插件,因此在第一次提交操作期间不会调用该插件。
您需要从提交处理程序中初始化验证插件。您可以使用验证框架提供的submitHandler
选项来提交表单,而不是使用自己的提交处理程序-只有表单有效时才会调用该选项。否则,在提交处理程序中,您必须检查表单是否有效。
$("#register-form").validate({
// Specify the validation rules
rules: {
firstname: "required",
lastname: "required"
},
// Specify the validation error messages
messages: {
firstname: "Please enter your first name",
lastname: "Please enter your last name"
},
submitHandler: function(){
//do your form submit here
return false;
}
});
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/jquery.validate.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/additional-methods.js"></script>
<h1>Register here</h1>
<!-- The form that will be parsed by jQuery before submit -->
<form action="#" method="post" id="register-form">
<div class="label">First Name</div>
<input type="text" id="firstname" name="firstname" />
<br />
<div class="label">Last Name</div>
<input type="text" id="lastname" name="lastname" />
<br />
<div style="margin-left:140px;">
<input type="submit" name="submit" value="Submit" />
</div>
</form>
您正在调用onsubmit方法。相反,在DOM就绪时调用validate。看看这个:
http://jsfiddle.net/68vgh7x1/3/
$("#register-form").validate({
// Specify the validation rules
rules: {
firstname: "required",
lastname: "required"
},
// Specify the validation error messages
messages: {
firstname: "Please enter your first name",
lastname: "Please enter your last name"
}
});
$(document).ready(function() {
$("#register-form").validate({
// Specify the validation rules
rules : {
firstname : "required",
lastname : "required"
},
// Specify the validation error messages
messages : {
firstname : "Please enter your first name",
lastname : "Please enter your last name"
}
});
// adding submit event is unnecessary.
});
如果您使用HTML5,我建议使用元素属性:
required="true"
http://jsfiddle.net/sud6L2bn/
来源:http://jqueryvalidation.org/files/demo/
PS:考虑使用标签元素来标记字段。
相关文章:
- ServiceStack JavaScript服务器事件客户端的身份验证
- MVC-模糊事件的远程验证
- 用于显示服务器端验证结果的 Jqgrid 编辑事件
- 当表单验证失败时,我将如何最好地处理下一个事件
- ASP.NET ListView选项卡事件触发验证按钮
- 为什么ng模式获胜't对来自非用户输入事件的更改进行正确验证
- 使用Ajax对Telerik Kendo网格进行更改事件验证
- 验证后禁用/启用 onClick 事件
- 有没有我可以听的事件发生在表单提交之后,并且在表单通过HTML5验证之后
- 对焦点和单击事件的验证
- 显示错误后的 Jquery 验证事件
- 验证“取消”上的字段 单击Onbeforeunload事件JQUERY
- Angular 自定义验证指令在 KeyUp 事件上不显示错误
- 表单验证和分析事件跟踪
- 在远程验证失败时触发事件 asp.net mvc 4.
- 表单验证事件问题
- 将隐藏选项卡中的HTML5验证事件传递给JavaScript函数
- jQuery在验证事件上滞后
- 两个ng在一个html页面中提交两个表单上的验证事件
- 客户端验证事件和 UI 阻止