使用 javascript 的电子邮件输入即时验证
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 .
..
我知道,我犯了一些简单的错误,但我为此苦苦挣扎了一段时间,无法继续前进...
您可能需要使用 @Andriy Klitsuk 引用的 HTML5 的电子邮件检查。因此,您可以完全省略额外的 checkEmail
调用。
但是遇到你的错误:
Uncaught ReferenceError: checkEmail is not defined at
HTMLInputElement.onblur
您会收到上述错误,因为 checkEmail
函数存在于 EventHandler 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
您的代码中缺少 If 关键字,即
else (reg1.test(email) == true)
var email = document.getElementById('email');
function checkEmail(element) {
var reg1 = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{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" >
您也缺少条件。只需使用它。
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
。现在解决方案;从 eventListener
中删除 checkEmail()
函数并使其独立,如下所示:
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";
}
}
我正在尝试使用 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 .
..
我知道,我犯了一些简单的错误,但我为此苦苦挣扎了一段时间,无法继续前进...
您可能需要使用 @Andriy Klitsuk 引用的 HTML5 的电子邮件检查。因此,您可以完全省略额外的 checkEmail
调用。
但是遇到你的错误:
Uncaught ReferenceError: checkEmail is not defined at HTMLInputElement.onblur
您会收到上述错误,因为 checkEmail
函数存在于 EventHandler 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
您的代码中缺少 If 关键字,即
else (reg1.test(email) == true)
var email = document.getElementById('email');
function checkEmail(element) {
var reg1 = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{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" >
您也缺少条件。只需使用它。
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
。现在解决方案;从 eventListener
中删除 checkEmail()
函数并使其独立,如下所示:
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";
}
}