-2

只有一个条件被执行,其他的不是。请提供解决方案。

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;
    }
}
4

2 回答 2

2

两个警报都没有触发的原因(如果您的元素被正确引用)是因为您return false;在每个 if 中执行。这可以防止在函数中触发更多代码,因此第二个代码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;
  }
}

谢谢弗雷德里克
_

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

于 2012-12-04T07:53:44.217 回答
0

一种情况有效,另一种情况无效,这意味着您可能将元素名称错误地用于不工作的情况。gender并且count应该是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;
    }
}
于 2012-12-04T07:52:51.763 回答