跳过块时的Javascript

跳过块时的Javascript,javascript,validation,Javascript,Validation,我正在使用以下代码验证表单: if (isEmpty(email)) { alert("1"); return false; } else if (!isEmail(email)) { alert("2"); return false; } if (isEmpty(name)) { alert("

我正在使用以下代码验证表单:

        if (isEmpty(email)) {
            alert("1");
            return false;
        }
        else if (!isEmail(email)) {
            alert("2");
            return false;
        }

        if (isEmpty(name)) {
            alert("3");
            return false;
        }

        if (isEmpty(age)) {
            alert("4");
            return false;
        }
        else if (!isAge(age)) {
            alert("5");
            return false;
        }

        if (isEmpty(city)) {
            alert("6");
            return false;

        }

        if (isEmpty(comments)) {
            alert("7");
            return false;
        }
当点击“提交”按钮时,如果前两个条件起作用(检查电子邮件变量是否为空或是否为电子邮件地址格式)-这意味着如果我将电子邮件输入保留为空或不为电子邮件地址格式,我将收到警报(1或2)

问题是,其余的验证被跳过,而我是否将另一个输入留空或不在格式中也无关紧要

另外,如果我使用第一个if块:

 if (isEmpty(email)) {
            alert("1");
            return false;
        }
        else if (!isEmail(email)) {
            alert("2");
            return false;
        }
把它移到验证块的末尾,一切正常

我猜我有一个错误的语法的地方,但我花了2个小时寻找,只是找不到它

附言

以下是我正在使用的两个验证函数:

function isEmpty(field) {
        if ((field == null || field == "")) {
            return true;
        }
        return false;
    }


function isEmail(field) {
        var atpos = field.indexOf("@");
        var dotpos = field.lastIndexOf(".");
        if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
            return false;
        }
    }
函数为空(字段){
如果((字段==null | |字段==“”){
返回true;
}
返回false;
}
功能邮件(字段){
var atpos=字段索引(“@”);
var dotpos=字段.lastIndexOf(“.”);
如果(atpos<1 | | dotpos=x.length){
返回false;
}
}

结束函数并停止正在执行的其余代码

而是设置一个变量:

result="false";
并在函数末尾添加

return result;

结束函数并停止正在执行的其余代码

而是设置一个变量:

result="false";
并在函数末尾添加

return result;

return语句退出函数以运行所有验证

  • 将所有验证保留在if-else-if块中,每次都继续使用return-false。 或
  • 当条件失败时,将变量设置为false,然后返回值。正如j00lz所说

  • return语句退出函数以运行所有验证

  • 将所有验证保留在if-else-if块中,每次都继续使用return-false。 或
  • 当条件失败时,将变量设置为false,然后返回值。正如j00lz所说

  • 如果将其更改为以下内容,会发生什么情况:

        if (isEmpty(email)) {
            alert("1");
            return false;
        }
        else if (!isEmail(email)) {
            alert("2");
            return false;
        }
        else if (isEmpty(name)) {
            alert("3");
            return false;
        }
        else if (isEmpty(age)) {
            alert("4");
            return false;
        }
        else if (!isAge(age)) {
            alert("5");
            return false;
        }
        else if (isEmpty(city)) {
            alert("6");
            return false;
        }
        else if (isEmpty(comments)) {
            alert("7");
            return false;
        }
    
    我只是好奇,如果你把整个事情做成一个大的if语句,而不是把它分成几个部分,考虑到它不会改变验证过程,会发生什么

    p.S.


    我不确定你是否意识到,但按照你的设置方式,一旦第一个if语句返回false,在该if语句中返回false将结束你正在使用的整个方法,这意味着它不会运行它的任何其他部分。因此,如果您正在拍摄为每个空输入等显示警报,则不会以这种方式发生。

    如果将其更改为以下内容,会发生什么:

        if (isEmpty(email)) {
            alert("1");
            return false;
        }
        else if (!isEmail(email)) {
            alert("2");
            return false;
        }
        else if (isEmpty(name)) {
            alert("3");
            return false;
        }
        else if (isEmpty(age)) {
            alert("4");
            return false;
        }
        else if (!isAge(age)) {
            alert("5");
            return false;
        }
        else if (isEmpty(city)) {
            alert("6");
            return false;
        }
        else if (isEmpty(comments)) {
            alert("7");
            return false;
        }
    
    我只是好奇,如果你把整个事情做成一个大的if语句,而不是把它分成几个部分,考虑到它不会改变验证过程,会发生什么

    p.S.



    我不确定你是否意识到,但按照你的设置方式,一旦第一个if语句返回false,在该if语句中返回false将结束你正在使用的整个方法,这意味着它不会运行它的任何其他部分。因此,如果您正在努力为每个空输入等显示警报,则不会以这种方式发生。

    您在isEmail函数中使用
    x.length
    ,但未定义
    x

    您在isEmail函数中使用
    x.length
    ,但是
    x
    没有定义。

    return
    退出该函数。请显示您的“isEmail”函数的定义。我看不出代码中有任何问题,只要您知道它只在验证失败的第一个字段发出警报,而不是所有字段。您能在上发布一个实时演示吗?这将有助于了解问题所在。您是否实现了这些功能isEmail和isAge??如果是,您可以发布它们吗?
    return
    退出该功能。请显示“iEmail”功能的定义。我看不出代码中有任何问题,只要您知道它只在验证失败的第一个字段发出警报,而不是所有字段。您可以在上发布一个实时演示吗?这将有助于了解问题所在。您是否实现了这些功能isEmail和isAge??如果是,您可以发布它们吗?但是如果电子邮件验证正常,它应该执行其他验证。我想他是这么说的。嗨,谢谢你的回答。正如Barmar所说,问题在于,当电子邮件输入得到验证时,函数仍会中断,其余的验证不会执行。在调用return之前,所有if语句都将运行,但如果电子邮件验证为OK,则应执行其他验证。我想他是这么说的。嗨,谢谢你的回答。正如Barmar所说,问题在于,当电子邮件输入得到验证时,函数仍然会中断,其余的验证不会执行。所有if语句都将运行,直到您调用return(我尝试了您的代码),它仍然会跳过除电子邮件验证之外的所有内容。谢谢你的angle tho:),你确定你的isEmai()函数中没有出错吗?因为如果它在if语句的第二个块后继续中断,我的钱就在某个地方出了问题。我尝试了你的代码,它仍然跳过所有内容,除了电子邮件验证。谢谢你的angle tho:),你确定你的isEmai()函数中没有出错吗?因为如果它在if声明的第二个区块后继续破裂,我的钱就出问题了。谢谢罗兰。你救了这一天,谢谢你,罗兰。你挽救了这一天。