2011-10-14 28 views
16

パスワードが一致するかどうかを確認するために、クライアントサイドフォームの検証を行っています。しかし、検証関数は常にundefinedを返します。JavaScript関数でブール値を返す

function validatePassword(errorMessage) 
{ 
    var password = document.getElementById("password"); 
    var confirm_password = document.getElementById("password_confirm"); 

    if(password.value) 
    { 
     // Check if confirm_password matches 
     if(password.value != confirm_password.value) 
     { 
     return false; 
     } 
    } 
    else 
    { 
     // If password is empty but confirm password is not 
     if(confirm_password.value) 
     { 
     return false; 
     } 
    } 
    return true; 
} 

validatePasswordは、Formオブジェクトのメンバ関数から呼び出されることに注意してください。

function Form(validation_fn) 
{ 
    // Do other stuff 
    this.submit_btn = document.getElementById("submit"); 
    this.validation_fn = validation_fn; 
} 

Form.prototype.submit = funciton() 
{ 
    var result; 
    if(this.validation_fn) 
    { 
     result = this.validation_fn(); 
    } 

    //result is always undefined 
    if(result) 
    { 
     //do other stuff 
    } 
} 
+0

この関数は 'undefined'を返しません。フォームオブジェクトのメンバ関数から* "を定義してください" * –

+0

ちょうどCTRL + SHIFT + Jを押します - エラーかどうかチェックしますもしあればここに投稿し、そうでなければデバッガを起動して実行してください。 –

+0

@AnilShanbhagエラーを返しません。私はデバッガをオープンしました。コードをステップ実行すると、その結果が 'undefined 'に設定されていることがわかりました。 – tryurbest

答えて

10

あなたはこのロット簡素化することができます:1は、彼らがこれはこれは常に戻ります、これになります

等しいかどうかを

  • 空でチェックしていないかどうかを

    • チェックブール値あなたの関数は、常にブール値を返す必要がありますが、あなたはあなたのコードを簡素化する場合、それは少し良くない見ることができます:

      function validatePassword() 
      { 
          var password = document.getElementById("password"); 
          var confirm_password = document.getElementById("password_confirm"); 
      
          return password.value !== "" && password.value === confirm_password.value; 
           //  not empty  and    equal 
      } 
      
  • +0

    @primvdbそれでも 'undedined'を返します..私は午前何かビザをする – tryurbest

    +0

    +1ライナーのために –

    +0

    @tryurbest:おそらく何かエラーが出ますか?この関数は*常に*を返し、それが返すものはブール値です...そしてあなたのコードでは、 'this.validation_fn'はfalseでなければなりません。 'this.validation_fn'の値は何ですか? – pimvdb

    2

    あなたはブール関数であなたの戻り値をラップすることができ

    Boolean([return value]) 
    

    「はすべての偽の値が偽で真実の文が真であることを保証します。

    関連する問題