ELSE IF语句没有验证信息

ELSE IF Statement not validating information

本文关键字:验证 信息 IF 语句 ELSE      更新时间:2023-09-26

验证表单一直工作良好,但我现在已经尝试添加电子邮件验证到代码,现在没有任何将验证,表单提交没有任何弹出错误框。

这是当前代码:

<script type="text/javascript">
    function validateForm(){
        var a=document.forms["order_form"]["fname"].value;
        var b=document.forms["order_form"]["address"].value;
        var c=document.forms["order_form"]["city"].value;
        var d=document.forms["order_form"]["pcode"].value;
        var e=document.forms["order_form"]["email"].value;
        var atpos=email.indexOf("@").value;
        var dotpos=email.lastIndexOf(".").value;
        if (a==null || a=="")
            {
            alert("Full name must be filled out");
            return false;
            }
        else if (b==null || b=="")
            {
            alert("Address must be filled out");
            return false;
            } 
        else if (c==null || c=="")
            {
            alert("City must be filled out");
            return false;
            }
        else if (d==null || d=="")
            {
            alert("Post-Code must be filled out");
            return false;
            }
        else if (e==null || e=="")
            {
            alert("Email Address must be filled out");
            return false;
            }
        else if (atpos<1||dotpos<atpos+2||dotpos+2>=email.length)
            {
            alert("Not a valid e-mail address");
            return false;
            }
    }
</script>

表单可能由于以下错误而提交

改变:

var atpos=email.indexOf("@").value;
var dotpos=email.lastIndexOf(".").value;

var atpos=e.indexOf("@");
var dotpos=e.lastIndexOf(".");

indexOf()返回的是一个数字而不是一个对象,所以没有value属性。

@fpierrat也注意到email应该是e

我没有看到以下邮件之前的任何声明:

var atpos=email.indexOf("@").value;
var dotpos=email.lastIndexOf(".").value;

也许你指的是e,而不是email ?

indexof()调用之后也删除.value,参见@charlieftl的回答,我们对此相当补充;-)