我有一个使用asp:requiredvalidator
和一些自定义javascript的表单,在没有正确填写的任何字段周围应用红色1px边框。
这工作完美,但现在我希望能够立即删除红色边框,当用户正确填写字段。
为了实现这一点,我使用Jquery的focusout()
方法来比较用户输入和正则表达式。到目前为止,除了邮政编码,我在每个领域(包括电子邮件验证)都正确地工作。出于某种原因,除了邮政编码之外,我编写的所有验证方法都可以正常工作。
下面是一个有效的电子邮件验证,例如
if (id == "email1" || id == "email2") {
emailValue = e.target.value;
if (validateEmail(emailValue)) {
$("#" + id).removeClass("ErrorControl");
}
else {
}
}
function validateEmail(email) {
var re = /^(([^<>()[]\.,;:s@"]+(.[^<>()[]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
这可以完美地工作,并在字段失去焦点并且电子邮件有效时立即删除红色边框。
但是我不能让我的zip验证器工作,即使它的工作方式几乎完全相同。
这是一个不工作的zip示例
//Zip code also require special validation to confirm
if (id == "zip") {
zipValue = e.target.value;
if (validateZip(zipValue)) {
$("#" + id).removeClass("ErrorControl")
}
}
//Simple zip validator
function validateZip(zip) {
var re = /^[0-9]{5}$/;
return re.test(zip);
}
不幸的是,这仍然会删除红色边框,即使我只输入字母!为什么会发生这种情况?
https://jsfiddle.net/hhjvstp3/我已经给email和zip一个ErrorControl类,因为我不能在jsfiddle上运行asp验证器。这和我描述的完全一样。电子邮件验证很好,邮政编码删除边界无论如何。
更新的小提琴
您可以看到哪一行从zip中删除了ErrorControl类
if (id == "firstname" || id == "lastname" || id == "address1" || id == "city" || id == "amount") {
//id == "zip" shouldn't be here
if (e.target.value != "") {
$("#" + id).removeClass("ErrorControl");
}
}