通用javascript表单验证不起作用

通用javascript表单验证不起作用,javascript,Javascript,我一直在尝试使用下面的javascript代码来验证联系人表单上的几个字段。验证适用于要验证的第一个项目,即名称字段,但不适用于第二个项目,即电子邮件字段。如果填写了name字段,则当该字段为空且表单提交时,验证似乎跳过了email字段检查 function validateForm() { var n = document.contact.name.value; n = n.trim(); var ema = document.contact.email.valu

我一直在尝试使用下面的javascript代码来验证联系人表单上的几个字段。验证适用于要验证的第一个项目,即名称字段,但不适用于第二个项目,即电子邮件字段。如果填写了name字段,则当该字段为空且表单提交时,验证似乎跳过了email字段检查

function validateForm() 
{

    var n = document.contact.name.value;
    n = n.trim();

    var ema = document.contact.email.value;
    ema = ema.trim();

    //Check if the name is missing
    if (n == null || n == "" || empty(n)) 
    {
        alert("Please enter your name.");
        document.contact.name.focus();
        return false;
    }

    //Check if the email is missing
    else if ( ema == null || ema == "" || empty(ema) )
    {
        alert( "Please enter your email address." );
        document.contact.email.focus();
        return false;
    }  
    else
    {
        return( true );
    }
}
以下是联系人表单上的HTML:

<FORM name="contact" METHOD="POST" ACTION="thankyou.php"  onsubmit="return validateForm()">

    <input type="checkbox" name="newsletter" value="YES" width="30" height="30"> Check the box to subscribe to Herb's Newsletter

    <input type="text" class="form-control" size=20 name="name" placeholder="Your name" />

    <input type="email" class="form-control" name="email" placeholder="Email Address" />

    <input class="btn btn-theme btn-subscribe" type="submit" value="Send" />

</form> 

选中此框可订阅Herb的时事通讯

谢谢

您似乎在
if
子句中使用了
empty
函数,该子句似乎没有定义,也不是标准javascript函数的一部分。试着摆脱它:

function validateForm() {
    var n = document.contact.name.value;
    n = n.trim();

    var ema = document.contact.email.value;
    ema = ema.trim();

    //Check if the name is missing
    if (n == null || n == "") {
        alert("Please enter your name.");
        document.contact.name.focus();
        return false;
    } else if (ema == null || ema == "") {
        //Check if the email is missing
        alert( "Please enter your email address." );
        document.contact.email.focus();
        return false;
    } else {
        return true;
    }
}

这里有一个。

在您的代码中使用else if语句

您编写的代码基本上是:
检查姓名->如果是falsy检查电子邮件->如果是falsy移动到else状态

但是当名称为true时,if语句将不会移动到
else
条件,因为它已经满足了条件。因此,如果您想同时检查这两个语句,您可以将这些语句分开,并创建5个单独的ifs,将其设置为switch语句,或者创建一个长检查。例如:

if ((n == null || n == "" || empty(n)) || ( ema == null || ema == "" || empty(ema) )) 
{
    alert("Something is missing");
    return false;
}  
else
{
    return( true );
}
或者使用多个ifs:

function validateForm() {

var n = document.contact.name.value;
n = n.trim();

var ema = document.contact.email.value;
ema = ema.trim();

//Check if the name is missing
if (n == null || n == "" || empty(n)) 
{
    alert("Please enter your name.");
    document.contact.name.focus();
    return false;
}

//Check if the email is missing
if ( ema == null || ema == "" || empty(ema) )
{
    alert( "Please enter your email address." );
    document.contact.email.focus();
    return false;
}  
return( true );
}
后者将始终返回true,除非触发其中一个if语句

请看下面关于空()的答案。我不知道那是什么,也不知道它是否把事情搞砸了