2011-10-14 24 views
16

Parolaların eşleşip eşleşmediğini kontrol etmek için istemci tarafı form doğrulaması yapıyorum. Ancak doğrulama işlevi her zaman undefined değerini döndürür. JavaScript işlevinde bir boolean değeri döndürme

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 nesnesinin bir üyesi işlevinden denir unutmayınız. bir
  • Kontrol onlar
  • Bu, bu neden olacaktır eşit olup olmadığını hangi edecek her zaman dönüş boş olup olmadığını

    • kontrol:

      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

    Bu işlev hiçbir zaman 'undefined' döndürmez. Lütfen tanımlayın * "Form nesnesinin bir üye işlevinden çağrılır." * –

    +0

    sadece CTRL + ÜST KRKT + J tuşlarına basın - hata olup olmadığını kontrol edin Evet, burada yazın, Hata ayıklayıcısını açın ve çalıştırın. –

    +0

    @AnilShanbhag Herhangi bir hata vermez. Hata ayıklayıcısını açtım ve koddan geçtiğimde, sonucun "undefined" olarak ayarlandığını fark ettiğimde, – tryurbest

    cevap

    10

    Buna çok basitleştirebiliris bir boole. İşleviniz de her zaman bir boolean dönmelidir, ancak kodunuzu basitleştirmek eğer biraz daha iyi yapar görebilirsiniz:

    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 yardım için teşekkürler. Bu hala "undedined" i döndürür .. bizzak bir şey yapıyoruz – tryurbest

    +0

    +1 tek astar için –

    +0

    @tryurbest: Belki de herhangi bir hata alıyor musunuz? Bu işlev * her zaman * döner ve ne döndüğü bir booledir ... Ve kodunuzda 'this.validation_fn' false olmalıdır. This.validation_fn'nin değeri nedir? – pimvdb

    2

    Sen Boole işlevinde dönüş değeri sarabilirdiniz

    Boolean([return value]) 
    

    'O Tüm falsey değerlerinin yanlış olduğunu ve doğru ifadelerin doğru olduğundan emin olursunuz.

    İlgili konular