我遇到了使用jQuery Validation Plugin 1.9.0验证HTML表单的情况。 (我正在使用jQuery 1.6.4)。 如果在加载页面后正确填写表单,则验证将在提交时进行。验证提供成功消息,但不会触发submitHandler。 如果再次按下提交按钮,它只会触发submitHandler。
我在http://jsfiddle.net/peterph/Hv3xz/1/上创建了一个模拟来说明问题。 谁能告诉我如何解决这个问题?
<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>
答案 0 :(得分:2)
validate
。第一次点击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');
},
});
});
一切都应该正常。
更新了示例: http://jsfiddle.net/8r47E/