0

JavaScript のネストされた if 構造に問題があります。どんな助けでも大歓迎です。

function validateForm()
{
    var a = document.forms["demo1"]["addr1"].value;
    var b = document.forms["demo1"]["city"].value;
    //var c = document.forms["demo1"]["fname"].value;
    //var d = document.forms["demo1"]["lname"].value;
    //var f = document.forms["demo1"]["phno"].value;
    //var g = document.forms["demo1"]["email"].value;
    //var g1 = document.forms["demo1"]["cemail"].value;
    //var h = document.forms["demo1"]["pwd"].value;
    //var h1 = document.forms["demo1"]["cpwd"].value;
    if(b=="" || b==null)
    {
      alert("Please enter your city");
      return false;
      break;
    }
    else if(a=="" || a==null)
        {
            alert("Please enter your address");
            return false;
            break;
        }
    else {return true;} 
}

<form name = "demo1" action = "exp2.php" onsubmit = "return validateForm()" method = "POST">

if ステートメントが 1 つしかない場合、コードは (意図したとおりに) 正常に動作します。しかし、複数の if else が展開されていると、意図した結果が得られません。

よろしく、マニ

4

4 に答える 4

5

まず、ステートメントは必要ありませんbreak。このコンテキストでは役に立ちません。

第二に、ネストする必要はありません。実際、 とaのチェックbは互いに独立しているため、ネストする必要はありません。

if(b=="" || b==null)
{
    alert("Please enter your city");
    return false;
}

if(a=="" || a==null)
{
    alert("Please enter your address");
    return false;
}

return true;
于 2013-03-20T05:00:55.710 に答える
1

isEmpty再利用可能な関数でコードを短くするのはどうですか

function validateForm()
{

    var isEmpty = function ( name , label ){

          var val = document.forms["demo1"][ name ].value;

          if( ! val  )
          {
               alert("Please enter your "+ label );
               return true;     
          }

          return false;

    }         

    return !isEmpty( 'city', 'city') && 
           !isEmpty( 'addr1', 'address');

}

isEmpty リターンtrueまたはfalse

于 2013-03-20T05:33:56.170 に答える
0

paxdiabloが言うように、2つの別々のifステートメントを使用できます。

ただし、都市を入力するときに住所のみを要求する場合は、これがネストされたifステートメントではないことを理解する必要があります。これは:

if(b=="" || b==null)
{
  alert("Please enter your city");
  return false;
}
else 
{
    if(a=="" || a==null)
    {
        alert("Please enter your address");
        return false;
    }
    else 
    {
        return true;
    }
}

より現実的なバージョンは、imoです:

if(b=="" || b==null)
{
  alert("Please enter your city");
  return false;
}

if((b=="" || b == null) && (a=="" || a==null))
{
    alert("Please enter your address");
    return false;
}
于 2013-03-20T05:11:56.387 に答える
0
if(b=="" || b==null) {
alert("Please enter your city");
return false;
}
else if(a=="" || a==null) {
alert("Please enter your address");
return false;
}
else {
return true;
}
于 2018-01-08T12:33:39.723 に答える