我有一个表格,需要输入 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);
},
});
});