为什么在触发jQuery Validate submitHandler之前必须提交两次?
我遇到过这样的情况:使用jQuery验证插件1.9.0验证HTML表单。(我正在使用jquery1.6.4)。 如果页面加载后表单填写正确,则在提交时进行验证。验证会给出一条成功消息,但不会触发submitHandler。 仅当您再次按下submit按钮时,它才会触发submitHandler 我在上创建了一个模拟来说明这个问题。 有人能告诉我如何解决这个问题吗为什么在触发jQuery Validate submitHandler之前必须提交两次?,jquery,jquery-plugins,jquery-validate,Jquery,Jquery Plugins,Jquery Validate,我遇到过这样的情况:使用jQuery验证插件1.9.0验证HTML表单。(我正在使用jquery1.6.4)。 如果页面加载后表单填写正确,则在提交时进行验证。验证会给出一条成功消息,但不会触发submitHandler。 仅当您再次按下submit按钮时,它才会触发submitHandler 我在上创建了一个模拟来说明这个问题。 有人能告诉我如何解决这个问题吗 <form method="post" id="form"> <input id="E_Mail" name
<form method="post" id="form">
<input id="E_Mail" name="E_mail" title="E_mail" required="required" /><br />
<input class="submit" type="submit" value="Send"/>
</form>
<script>
jQuery(function($) {
$("#form").submit(function(e) {
var $form = $(this);
alert('Start Validation');
$form.validate({
debug: false,
focusInvalid: false,
onfocusout: false,
onkeyup: false,
onclick: false,
rules:
{
E_mail: {required:true, email:true },
},
success: function(label) {
alert('succes:' + label);
},
submitHandler: function(form){
alert('start submitHandler');
postContent('test');
alert('end submitHandler');
},
invalidHandler: function(form, validator) {
alert('invalidHandler');
},
}).form();
alert('end Validation');
e.preventDefault();
});
});
function postContent(postData){
alert('postcontent: ' + postData);
}
</script>
jQuery(函数($){
$(“#表格”)。提交(功能(e){
var$form=$(此);
警报(“启动验证”);
$form.validate({
调试:错误,
焦点无效:错误,
onfocusout:false,
onkeyup:false,
onclick:false,
规则:
{
电子邮件:{required:true,email:true},
},
成功:功能(标签){
警报(“成功:”+标签);
},
submitHandler:函数(表单){
警报(“启动提交程序”);
后内容(“测试”);
警报(“结束提交者”);
},
invalidHandler:函数(表单、验证器){
警报(“invalidHandler”);
},
}).form();
警报(“结束验证”);
e、 预防默认值();
});
});
功能后内容(postData){
警报('postcontent:'+postData);
}
在您提交表单之前,不会调用
验证
。第一次点击submit
,验证尚未应用于表单。第二次
您应该将调用移动到validate
的submit
处理程序之外:
jQuery(function ($) {
$("#form").validate({
debug: false,
focusInvalid: false,
onfocusout: false,
onkeyup: false,
onclick: false,
rules:
{
E_mail: {required:true, email:true },
},
success: function(label) {
alert('succes:' + label);
},
submitHandler: function(form){
alert('start submitHandler');
postContent('test');
alert('end submitHandler');
},
invalidHandler: function(form, validator) {
alert('invalidHandler');
},
});
});
一切都会好起来的
更新示例: