Javascript 表单验证、必需的输入、JS,试图将这两个功能结合起来

Javascript 表单验证、必需的输入、JS,试图将这两个功能结合起来,javascript,forms,validation,Javascript,Forms,Validation,我试图将这两种功能结合起来: function validateForm() { var x = document.forms["form1"]["condition1"].value; var y = document.forms["form1"]["condition2"].value; var z = document.forms["form1"]["condition3"].value; if (x == null ||

我试图将这两种功能结合起来:

function validateForm() {
        var x = document.forms["form1"]["condition1"].value;
        var y = document.forms["form1"]["condition2"].value;
        var z = document.forms["form1"]["condition3"].value;

        if (x == null || x == "") {
        alert("Please enter a 'condition1' value");
        return false;
        }

        if (y == null || y == "") {
        alert("Please enter a 'condition2' value");
        return false;
        }
        if (z == null || z == "") {
        alert("Please enter a 'condition3' value");
        return false;
        }
    }

// Form Validation for pages with no 'condition2' option

    function validateForm2() {
        var x = document.forms["form1"]["condition1"].value;
        var z = document.forms["form1"]["condition3"].value;

        if (x == null || x == "") {
        alert("Please enter a 'condition1' value");
        return false;
        }
        if (z == null || z == "") {
        alert("Please enter a 'condition3' value");
        return false;
        }
    }
validateForm()检查条件1、条件2和条件3是否已成功输入到表单1中,如果未成功,则通知用户

某些使用Form1的页面没有条件2

目前,没有“condition2”输入的页面将无法工作。一个非常简单的解决方法是只生成一个几乎相同的函数validateForm2(),其中省略了“condition2”。然后我必须检查并排序哪些页面需要哪个函数

<form name="form1" onsubmit="return validateForm()">



我正在尝试通过将“condition2”设置为仅当它实际在页面上时才需要,从而将这两个函数结合起来。

您只能使用一个validateForm函数

 <form name="form1" onsubmit="return validate();">
function validateForm() {
    var isPresentCond2 = document.forms["form1"]["condition2"],
        x = document.forms["form1"]["condition1"].value,
        y,
        z = document.forms["form1"]["condition3"].value;

    if (x == null || x == "") {
    alert("Please enter a 'condition1' value");
    return false;
    }
    if (isPresentCond2) {
        y = document.forms["form1"]["condition2"].value;
        if (y == null || y == "") {
            alert("Please enter a 'condition2' value");
            return false;
        }
    }
    if (z == null || z == "") {
    alert("Please enter a 'condition3' value");
    return false;
    }
}

谢谢你的回答,这是一个更好的解决办法。devconcept提供了一个函数来覆盖所有内容。再次感谢您的帮助/时间。我不确定,但我认为语句的“if(isPresentCond2)”部分会检查条件2是否存在。我可能错了,但我再次感谢您的帮助。isPresentCond2=document.forms[“form1”][“condition2”]正在测试名为“form1”的表单中是否存在名为“condition2”的输入。如果不存在,则返回条件中等于false的未定义。null“,”和undefined在javascript中都是假值。您还可以将if(z==null | | z==“”)替换为if(z)等等。同样的道理。谢谢你的解释,现在这个概念对我来说已经很清楚了。
 function validate()
 {
   if(required_condition_both)
    {
      return  validateForm();

    }
   else if(required_condition1_only)
    {  
      return  validateForm2();
    }


 }
function validateForm() {
    var isPresentCond2 = document.forms["form1"]["condition2"],
        x = document.forms["form1"]["condition1"].value,
        y,
        z = document.forms["form1"]["condition3"].value;

    if (x == null || x == "") {
    alert("Please enter a 'condition1' value");
    return false;
    }
    if (isPresentCond2) {
        y = document.forms["form1"]["condition2"].value;
        if (y == null || y == "") {
            alert("Please enter a 'condition2' value");
            return false;
        }
    }
    if (z == null || z == "") {
    alert("Please enter a 'condition3' value");
    return false;
    }
}