2013-03-20 4 views
0

У меня проблема с вложенной структурой if в javascript. Любая помощь приветствуется.вложен, если else в javascript

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. Но я не получаю ожидаемого результата, если более одного, если другое было развернуто.

С уважением, Mani

+0

Почему существует «перерыв» –

+0

, кажется мне хорошим http://jsfiddle.net/arunpjohny/EsJXu/ –

ответ

4

Во-первых, вам не нужно 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; 
0

Как paxdiablo говорит, что вы можете использовать два отдельные заявления.

Но если вы хотите только указать адрес, когда город введен, вы должны понимать, что это не вложенный оператор 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; 
    } 
} 

Более reabable версия будет, имо:

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

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; 
} 
Смежные вопросы