使用javascript进行电子邮件输入即时验证

使用javascript进行电子邮件输入即时验证,javascript,validation,email,input,onblur,Javascript,Validation,Email,Input,Onblur,我正在尝试用js验证输入类型=电子邮件 我找到了不同的方法,但没有一种对我有效 HTML 我每次得到的是: 未捕获引用错误:在HTMLInputElement.onblur中未定义checkEmail 我知道,我犯了一些简单的错误,但我已经为此挣扎了一段时间,无法继续…你可以使用@Andriy Klitsuk引用的HTML5的电子邮件检查。这样你就可以完全省去额外的支票和电子邮件通话 但说到你的错误: 未捕获引用错误:未在上定义checkEmail HTMLInputElement.onblur

我正在尝试用js验证输入类型=电子邮件

我找到了不同的方法,但没有一种对我有效

HTML

我每次得到的是:

未捕获引用错误:在HTMLInputElement.onblur中未定义checkEmail


我知道,我犯了一些简单的错误,但我已经为此挣扎了一段时间,无法继续…

你可以使用@Andriy Klitsuk引用的HTML5的电子邮件检查。这样你就可以完全省去额外的支票和电子邮件通话

但说到你的错误:

未捕获引用错误:未在上定义checkEmail HTMLInputElement.onblur

由于checkEmail函数存在于EventHandler文档中,因此会出现上述错误。addEventListener'DOMContentLoaded',函数{…,因此在其外部不可用

您可以将函数从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" >
还有一个if缺失

参考代码笔

如果代码中缺少关键字,即

else (reg1.test(email) == true)
var email=document.getElementById'email'; 函数检查元素{ 变量reg1=/^[a-z0-9.[uz%+-]+@[a-z0-9.-]+\[a-z]{2,4}$/; 如果reg1.testemail.value==false{ email.style.border='1px实心红色'; }else ifreg1.testemail.value==true{ email.style.border=1px纯绿色; } }; 用户电子邮件:
您也缺少条件。只需使用此项即可

  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";
    }
  }

我可以问一下你为什么要这样做吗?HTML5默认检查不是很好吗?你可以简单地在你的电子邮件输入中添加“必需的”。我必须更改边框颜色,所以我想“必需的”是不够的。。。
else (reg1.test(email) == true)
  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" >
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";
    }
  }