表单验证工作正常,因此如果您将电子邮件输入留空并点击提交一次,它将抛出错误消息。但当你填写电子邮件[输入]字段时,我必须点击"submitBtn"两次,有时甚至更多才能真正显示结果。
这就是脚本:
$('#RetrieveQuote2').validate({
rules: {
email: {
required: true,
email: true
}
},
errorPlacement: function(error, element) {
error.insertBefore(element);
},
submitHandler: function() {
$('input#submitBtn').bind('click', function() {
var content = $("input#email").val();
if (content == "abc@abc.com") {
$('.quotenotfound').show();
return false;
} else {
$('form#RetrieveQuote2').submit();
formValidationSubmitted = true;
if (!$('#RetrieveQuote2').valid()) {
$('.errorMessage').show();
}
$("input#submitBtn").colorbox({
href: function() {
var url = $(this).parents('form').attr('action');
var ser = $(this).parents('form').serialize(); //alert(url+'?'+ser);
return url + '?' + ser;
},
innerWidth: "780",
innerHeight: "450",
iframe: true
});
} // end of else
});
} // end of submitHandler
});
下面是HTML表单:
<form name="RetrieveQuote2" id="RetrieveQuote2" action="overlays/quotelist.php" method="get">
<fieldset class="cf">
<legend>email</legend>
<label>Your Email</label>
<input type="text" name="email" id="email" value="" maxlength="25"/>
<div class="submit">
<input type="submit" name="RetrieveQuote" class="rqSubmitBtn" id="submitBtn" value="SUBMIT" />
</div>
</fieldset>
</form>
问题是您正试图将处理程序添加到提交处理程序内部的提交按钮中。
因此,在第一次单击时,会调用验证处理程序(从它自动添加的单击处理程序中调用),然后添加您的点击处理程序,但不会运行。第二次单击时,添加另一个单击处理程序,然后调用第一次添加的处理程序。
验证插件应该自动为您添加处理程序。
删除提交处理程序内容周围的$('input#submitBtn').bind('click', function() {
。
您也不需要$('form#RetrieveQuote2').submit();
。这也将在提交处理程序之后自动发生。
演示:http://jsfiddle.net/asrfV/