通过JavaScript验证使表单字段成为可选字段

通过JavaScript验证使表单字段成为可选字段,javascript,function,validation,Javascript,Function,Validation,我有如下JavaScript表单验证函数: function validate_name(field) { if (field == "") return "Please enter the name.\n"; return ""; } function validate_specialty(field) { if (field == "") return "Please enter the specialty.\n"; return ""; } func

我有如下JavaScript表单验证函数:

function validate_name(field) 
{
    if (field == "") return "Please enter the name.\n";
    return "";
}

function validate_specialty(field) 
{
    if (field == "") return "Please enter the specialty.\n";
    return "";
}

function validate_location(field) 
{
    if (field == "") return "Don't forget the location.\n";
    return "";
}
其中,从表单的
onSubmit
调用的函数是:

function validate_fields(form)
{
    fail  = validate_name(form.name.value);
    fail += validate_specialty(form.specialty.value);
    fail += validate_location(form.location.value);

    if (fail == "")     
        return true;
    else 
    { 
        alert(fail); 
        return false;
    }
}
这很好,但我已经决定,我不希望这三个都是必需的。如果我可以将这三个字段设置为可选的话,那就太好了,这样,如果这些字段中的任何一个被填充,它都会验证为true,但是如果这三个字段都为空,我就可以抛出警报并验证为false


非常感谢您提供的任何帮助。

您可以通过单独捕获结果并使用或分组进行测试来实现这一点

function validate_fields(form)
{
    fail1 = validate_name(form.name.value);
    fail2 = validate_specialty(form.specialty.value);
    fail3 = validate_location(form.location.value);

    if (fail1 == "" || fail2 == "" || fail3 == "")     
        return true;
    else 
    { 
        alert(fail1 + fail2 + fail3); 
        return false;
    }
}

您可以通过单独捕获结果并使用或分组进行测试来实现这一点

function validate_fields(form)
{
    fail1 = validate_name(form.name.value);
    fail2 = validate_specialty(form.specialty.value);
    fail3 = validate_location(form.location.value);

    if (fail1 == "" || fail2 == "" || fail3 == "")     
        return true;
    else 
    { 
        alert(fail1 + fail2 + fail3); 
        return false;
    }
}

这与我尝试的类似,但我使用了警报字符串。它不起作用,但我想我会像你写的那样尝试,看看我是否做错了什么。谢谢,还是小费。这很有魅力。我当时使用的方法忽略了
警报(fail1+fail2+fail3)
,并且使用了
警报(“Failed”)
,我认为这是可行的(尽管现在看它,这似乎是一种愚蠢的方法),但没有想到-再次感谢!这与我尝试的类似,但我使用了警报字符串。它不起作用,但我想我会像你写的那样尝试,看看我是否做错了什么。谢谢,还是小费。这很有魅力。我当时使用的方法忽略了
警报(fail1+fail2+fail3)
,并且使用了
警报(“Failed”)
,我认为这是可行的(尽管现在看它,这似乎是一种愚蠢的方法),但没有想到-再次感谢!