javascript验证无法正常工作

时间:2012-12-04 07:42:20

标签: php javascript

只有一个条件被执行而其他条件没有被执行。请提供解决方案。

function a() {
    var x=document.forms["addform"]["gender"].value;
    if (x==null || x==""){
        alert("Enter gender");
        return false;
    }

    var y=document.forms["addform"]["count"].value;
    if (y==null || y==""){
        alert("enter country");
        return false;
    }
}

2 个答案:

答案 0 :(得分:2)

两个警报都没有触发的原因(如果你的元素被正确引用)是因为你在每个if中执行return false;。这可以防止在函数中触发更多代码,因此第二个if没有机会触发。

在我的代码中,如果return false;执行,我在函数末尾添加了一个变量,然后添加了if。这样就可以触发警报。

function a()
{
  var submitform = true, x=document.forms["addform"]["gender"].value, y=document.forms["addform"]["count"].value;
  if (x===null || x=="") {
    alert("Enter gender");
    submitform = false;
  }   

  if (y===null || y=="") {
    alert("enter country");
    submitform = false;
  }
  // Added an if here
  if (submitform === false) {
    return false;
  }
}

感谢
弗雷德里克

编辑:使用===是检查相同值的更好做法。有关详情,请参阅this stackoverflow问题。

答案 1 :(得分:0)

一个条件有效,另一个条件不起作用,这意味着您可能对于不起作用的元素名称有错误。 gendercount应该是输入或选择元素的name。因此,如果您使用的是

,那么您的HTML应该与此类似
<select name="gender">  <--- name = gender
    <option value="">Please select</option>
    <option value="M">Male</option>
    <option value="F">Female</option>
</select>

<select name="count">   <--- name = count
    <option value="">Please select</option>
    <option value="USA">USA</option>
    <option value="Canada">Canada</option>
</select>

在一个警报中显示所有错误会更好:

function a()
{
    var errors = "";

    var x=document.forms["addform"]["gender"].value;
    if (x==null || x==""){
        errors += "Enter gender" + "\n";
    }

    var y=document.forms["addform"]["count"].value;
    if (y==null || y==""){
        errors += "Enter Country" + "\n";
    }

    if(errors)
    {
        alert(errors);
        return false;
    }
}