javascript验证无法通过验证电子邮件输入

时间:2018-07-21 19:00:25

标签: javascript

当我运行以下脚本时,它将无法通过电子邮件验证。我删除了电子邮件验证,它将继续。对导致问题的原因有何见解?

vEmail = document.getElementById("xEmail").value;

// checks to see if email is formatted correctly
var atpos=vEmail.indexOf("@");
var dotpos=vEmail.lastIndexOf(".");

    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=z.length) {
    document.forms['checkout_form'].elements['email'].focus();
    alert("Please check your eMAIL ADDRESS. It doesn't appear correct.");
    return false;
    }

// *** check each field for SHIPPING values ***

vShipTo = document.getElementById("xShipTo").value;
     if (vShipTo=="") {         
     document.forms['checkout_form'].elements['ship_to'].focus(); 
     alert("No SHIP TO NAME entered");
     return false;
    }

3 个答案:

答案 0 :(得分:0)

除非在其他地方定义z,否则我认为错误是由于未定义z引起的。

 if (atpos<1 || dotpos<atpos+2 || dotpos+2>=   (z.length)     ) {

这将导致它失败,就像两个条件都不满足一样,程序将遇到参考错误并停止运行。如果删除了z,程序将继续执行到结尾。

编辑:

此外,此代码在函数内部运行吗?

答案 1 :(得分:0)

更正此内容(此处未定义z)

if(atpos<1 || dotpos<atpos+2 || dotpos+2 >= z.length) {

if(atpos<1 || dotpos<atpos+2 || dotpos+2 >= vEmail.length) {

这是一个有效的代码段

checkMail();
    
function checkMail(){
    vEmail = document.getElementById("xEmail").value;
      // checks to see if email is formatted correctly
     var atpos=vEmail.indexOf("@");
     var dotpos=vEmail.lastIndexOf(".");
    if(atpos<1 || dotpos<atpos+2 || dotpos+2 >= vEmail.length) {
         document.forms['checkout_form'].elements['email'].focus();
          alert("Please check your eMAIL ADDRESS. It doesn't appear correct.");
         return false;
 
    }
    //return false;need to set true
    }
<body>
<form name="checkout_form" id="checkout_form" action="">
  Email:<br>
  <input type="text" id="xEmail" name="email" value="@gmail.com">
  <br>
  <br><br>
  <input type="submit" onclick="return checkMail();"value="Submit">
</form> 
</body>

答案 2 :(得分:0)

使用正则表达式可能是验证电子邮件的最佳方法

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(String(email).toLowerCase());
}


vEmail = document.getElementById("xEmail").value;

// checks to see if email is formatted correctly
    if (!validateEmail(vEmail)) {
    document.forms['checkout_form'].elements['email'].focus();
    alert("Please check your eMAIL ADDRESS. It doesn't appear correct.");
    return false;
    }

// *** check each field for SHIPPING values ***

vShipTo = document.getElementById("xShipTo").value;
     if (vShipTo=="") {         
     document.forms['checkout_form'].elements['ship_to'].focus(); 
     alert("No SHIP TO NAME entered");
     return false;
    }