2017-01-03 13 views
1

Javascriptフォームの検証に問題があります.Javascriptフォームの検証では、真であるかどうか、値がないかどうかを返します。最初のif/else文それは真実か偽か)、そこからは機能しません.JavaScriptを見ると、私が何をしようとしているのか理解できるはずです。Javascriptフォームの検証(返品問題)

$('#button').click(function(){ 
    name = $("#name").val(); //name input 
    age = $("#age").val(); //age input 
    sex = $("#sex").val(); // sex input 

    if(name.match(/(\w)\s(\w)/)){ 
     return true; 
    } 
    else { 
      $('.form-row:first-child').css('border','1px solid red'); 
      return false; 
    } 

    if (age < 0 || age > 130 || isNaN(age)) { 
      $('.form-row:nth-child(2)').css('border','1px solid red'); 
      return false; 
    } 
    else { 
     return true; 
    } 

     if (sex == "male" || sex == "Male" || sex == "female" || sex == "Female"){ 
      return true; 
     } 
     else { 
      $('.form-row:nth-child(3)').css('border','1px solid red'); 
      return false; 
     } 

    }); 

答えて

0

戻り値関数から抜け出すだろう。代わりに、フラグを設定し、そのフラグを最後に返します。

$('#button').click(function(){ 
 
    returnFlag = false 
 
    name = $("#name").val(); //name input 
 
    age = $("#age").val(); //age input 
 
    sex = $("#sex").val(); // sex input 
 

 
    if(name.match(/(\w)\s(\w)/)){ 
 
     returnFlag = true; 
 
    } 
 
    else { 
 
      $('.form-row:first-child').css('border','1px solid red'); 
 
      returnFlag = false; 
 
    } 
 

 
    if (age < 0 || age > 130 || isNaN(age)) { 
 
      $('.form-row:nth-child(2)').css('border','1px solid red'); 
 
      returnFlag = false; 
 
    } 
 
    else { 
 
     returnFlag = true; 
 
    } 
 

 
     if (sex == "male" || sex == "Male" || sex == "female" || sex == "Female"){ 
 
      returnFlag = true; 
 
     } 
 
     else { 
 
      $('.form-row:nth-child(3)').css('border','1px solid red'); 
 
      returnFlag = false; 
 
     } 
 

 
    return returnFlag; 
 
    });

+0

問題は今、最初の* if..else *はフラグをfalseに設定するかもしれませんが、次はtrueに、それをリセットすることである... – RobG

+0

あなたは正しい、私は」didnのそれについて考えることさえありません。実際にreturnFlag == falseがユースケースに応じて動作するfalseを返すと仮定します。 – cbronson

+1

* returnFlag *は* true *に初期化することができ、テストが過去になったときには設定されず、テストが失敗した場合には* false *に設定されます。 ;-) – RobG

関連する問題