-2

1 つの条件のみが実行され、その他は実行されません。解決策を提供してください。

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なくなり、2 番目のコードが実行される機会がなくなります。

私のコードでは、変数を追加してから、どちらかが実行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;
  }
}

ありがとう
フレデリック

編集: 使用===は、同一の値をチェックするためのより良い方法です。詳細については、このスタックオーバーフローの質問を参照してください。

于 2012-12-04T07:53:44.217 に答える
0

1 つの条件は機能し、もう 1 つの条件は機能しません。つまり、機能していない要素の要素名が間違っている可能性があります。入力要素または選択要素の である必要がありgenderます。したがって、選択を使用している場合、HTML は次のようになります。countname

<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>

1 つのアラートですべてのエラーを表示する方が適切です。

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 に答える