我有一个表格,其中包含3个要输入的字段,名字,姓氏和电子邮件地址。
这些元素与我在电子邮件地址中获得的元素类似:
<dl>
<dt>
<label for="Email_Address">Email Address</label>
</dt>
<dd style="float:right">
<input type="text" id="Email_Address" class="required email" name="Email_Address" />
<br>
<span class="form_error" id="email_error">
<span id="email_msg"></span>
</span>
</dd>
</dl>
它下面的范围,类“form_error”是我显示任何验证错误的地方。验证码一切正常,检查有效的电子邮件地址等。然后我想我会投入AJAX验证,我可以查看该电子邮件地址是否已经存档,如果是,也显示一条消息。一切都很好。问题是如果有人输入已存档的电子邮件地址,他们会收到消息“电子邮件已存档”。然后他们去更改表单中的电子邮件地址,我得到验证错误,但我似乎无法弄清楚如何清除“已存档”消息。我尝试过使用empty()
,replaceWith()
和其他一些内容,但似乎没有用。
这是验证码,带有AJAX调用。我确信这很简单,但我还不是所有这些的专家。
$(document).ready(function(){
$("#LegalVita_Sign_Up").validate({
submitHandler: function(form) {
var isDup = false;
$.ajax({
url: 'dup_email.php',
data: { email: $('#Email_Address').val() },
async: false,
success: function(msg) {
isDup = msg === "1" ? true : false
},
});
if (isDup) {
error = 'duplicate email address: ' + $('#Email_Address').val();
$('#email_msg').replaceWith(error);
return false;
} else {
form.submit();
return true;
}
},
messages: {
First_Name: " First name required",
Last_Name: " Last name required",
Email_Address: {
required: " email required",
email: " email must be of the format: 'name@domain.com'"
}
},
errorPlacement: function(error, element) {
if (element.attr("name") == "First_Name" )
error.insertBefore("#first_msg");
else if (element.attr("name") == "Last_Name" )
error.insertBefore("#last_msg");
else if (element.attr("name") == "Email_Address" ) {
error.insertBefore("#email_msg");
} else
error.insertAfter(element);
},
});
});
答案 0 :(得分:1)
您的问题与jQuery Validate无关。在提交处理程序的开头设置$('#email_msg').text('')
。