2016-07-27 32 views
-1

我在製作登錄表單。在提交之前,我檢查是否填寫了所有字段。我還檢查密碼是否超過7個字符,並且至少包含一個數字,至少包含一個字符,並且沒有空格。我現在的代碼不斷告訴我,無論我輸入什麼,我都會錯過一個角色。這是代碼:爲什麼我的代碼無法識別密碼包含字符?

if($("#password").val()==""){ 

     error += "The password is required.<br>"; 

    } 
    else if($("#password").val().length<8){ 

     error += "Your password needs at least 8 characters.<br>"; 

    } 
    else if($("#password").val().length >= 8){ 

     var pass = $("#password").val().split(""); 

     var hasNum = false; 

     var hasChar = false; 

     var hasSpace = false; 

     for(var i = 0; i < pass.length; i++){ 

      if(pass[i] == " "){ 

       hasSpace = true; 

      } 
      else if(Number(pass[i]) == NaN){ 

       hasChar = true; 

      } 
      else if(Number(pass[i]) != NaN){ 

       hasNum = true; 

      } 


     } 

     if(!hasChar){ 

      error += "Your password must contain at least one character.<br>"; 

     } 
     if(!hasNum){ 

      error += "Your password must contain at least one number.<br>"; 

     } 
     if(hasSpace){ 

      error += "Spaces are not allowed in a password.<br>"; 

     } 

    } 

我首先檢查一個空間。然後我檢查一個字符是否可以轉換爲數字。如果不是,那麼它必須是一個字符串。如果它可以轉換,它必須是一個數字。無論我輸入什麼內容,它都會顯示「您的密碼必須至少包含一個字符」。我怎樣才能解決這個問題?如果有必要,我會給你更多的代碼。

回答

2

的問題是,NaN比較不等(通過==,=,===,和==!)爲任何其他值,包括到另一個NaN值:

NaN === NaN;// false 
Number('S') == NaN; //false 
Number(10) == NaN; //false 

嘗試使用isNaN()代替。

相關問題