[英]Email input instant validation with javascript
我正在尝试使用js
验证输入type="email"
。
我找到了不同的方法来完成这项工作,但我没有一个能奏效。
HTML
<label for="email" class="form__label">User e-mail:</label>
<input type="email" name="email" id="email" onblur="checkEmail(this.value);" class="form__input" >
JS
document.addEventListener('DOMContentLoaded', function() {
var email = document.getElementById('email');
function checkEmail(email) {
var reg1 = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
if (reg1.test(email) == false) {
email.style.border = "1px solid red";
}else (reg1.test(email) == true) {
email.style.border = "1px solid green";
}
};
});
我每次都能得到的是:
Uncaught ReferenceError: checkEmail is not defined at HTMLInputElement.onblur .
..
我知道,我犯了一些简单的错误,但是我为此苦了一段时间,无法继续前进...
您在代码中缺少If关键字,即
else (reg1.test(email) == true)
var email = document.getElementById('email'); function checkEmail(element) { var reg1 = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[az]{2,4}$/; if (reg1.test(email.value) == false) { email.style.border ='1px solid red'; }else if(reg1.test(email.value) == true){ email.style.border = "1px solid green"; } };
<label for="email" class="form__label">User e-mail:</label> <input type="email" name="email" id="email" onblur="checkEmail(this);" class="form__input" >
您可以使用@Andriy Klitsuk引用的HTML5电子邮件检查功能。 因此,您可以完全省去多余的checkEmail
呼叫。
但是要解决您的错误:
未捕获的ReferenceError:在HTMLInputElement.onblur上未定义checkEmail
你收到上述误差作为checkEmail
功能是本事件处理程序内部document.addEventListener('DOMContentLoaded', function(){ ....
,并因此不可用外面。
您可以将函数从EventListener中取出,因为无论如何在EventHandler中都不会调用它:
document.addEventListener('DOMContentLoaded', function() {
var email = document.getElementById('email');
});
function checkEmail(email) {
var reg1 = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
if (reg1.test(email) == false) {
email.style.border = "1px solid red";
} else if (reg1.test(email) == true) { // if was missing here
email.style.border = "1px solid green";
}
};
我更喜欢传递元素
<label for="email" class="form__label">User e-mail:</label>
<input type="email" name="email" id="email" onblur="checkEmail(this);" class="form__input" >
并且该函数将获得如下值
function checkEmail(email) {
var val = email.value;
var reg1 = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
if (reg1.test(email) == false) {
email.style.border = "1px solid red";
}else if (reg1.test(email) == true) {
email.style.border = "1px solid green";
}
};
还有一个if是否丢失
您也缺少条件。 简单地使用这个。
function checkEmail(elm) {
var reg1 = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
console.log(reg1.test(elm.value))
if (reg1.test(elm.value) == false){
elm.style.border = "1px solid red";
}else{
elm.style.border = "1px solid green";
}
}
<label for="email" class="form__label">User e-mail:</label>
<input type="email" name="email" id="email" onblur="checkEmail(this);" class="form__input" >
首先, else
语句中存在语法错误。 如果是,应该是else if
。 现在解决; 除去checkEmail()
从功能eventListener
,让它独立的,就像这样:
function checkEmail(email) {
var email = document.getElementById('email');
var reg1 = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
if (reg1.test(email) == false) {
email.style.border = "1px solid red";
}else if (reg1.test(email) == true) {
email.style.border = "1px solid green";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.