2013-02-13 287 views
0

我試圖驗證密碼使用JavaScript,它是爲了確保在更改密碼時,輸入的新密碼等於重新輸入新密碼的密碼(用戶被要求輸入他們的密碼新的密碼兩次,所以都必須匹配),但在同一時間,我想確保新密碼至少6個字符長,我有這些功能分開,但不知道如何將它們結合...謝謝你提前幫助!驗證密碼

這是我迄今爲止...

這是爲了確保新密碼匹配:

function validatePassword() 
    { 
    var new_password = document.getElementById("new_password").value; 
    var confirm_new_password = document.getElementById("confirm_new_password").value; 
    <!-- if they match, go to next page --> 
     if (new_password == confirm_new_password) 
      { 
      return true; 
      } 
    <!-- if they don't match, an error message is displayed --> 
     else 
      { 
       alert("Passwords do not match."); 
      } 
      return false; 
    } 

這是密碼的長度:

function validatePassword() 
    { 
    if (document.getElementById("new_password").value.length < "5") 
    { 
    <!--If pasword is less than 5 characters long, display error message--> 
    alert("Please ensure your password is at least 6 characters long."); 
    return false; 
    } 
    return true; 
    } 

如何我是否將這兩個組合起來形成一個SINGLE函數,其中檢查兩個新密碼以便它們匹配,並檢查它們是否長於6個字符?

+1

僅供參考,Dropbox的發佈了他們的密碼驗證JS和它是迄今爲止我見過的最好的 - https://tech.dropbox.com/2012/04/zxcvbn-realistic-password-strength-估計/ – 2013-02-13 12:33:17

回答

1

要結合只是你的兩個功能,這會工作:

function validatePassword() 
{ 
    var new_password = document.getElementById("new_password").value; 
    var confirm_new_password = document.getElementById("confirm_new_password").value; 

    if (new_password.length < 5) 
    { 
     <!--If pasword is less than 5 characters long, display error message--> 
     alert("Please ensure your password is at least 6 characters long."); 
     return false; 
    } 
    else if (new_password != confirm_new_password) 
    { 
     alert("Passwords do not match."); 
     return false; 
    } 
    else 
    { 
      return true; 
    } 
} 

雖然我同意,有更好的方法在那裏。而且,請確保你在做服務器端驗證,因爲客戶端驗證非常容易跳過。

+0

感謝您的幫助,這是我的學校項目,所以我很新,但感謝您的建議! – user1930227 2013-02-13 12:40:23

+0

@ user1930227 - np,很高興我們可以提供幫助。但不要太早開始學習最佳實踐。祝你好運。 – sgeddes 2013-02-13 12:43:24

+0

有一個小問題,雖然兩個密碼不匹配,但輸入的密碼長度超過6個字符時仍可以正常工作,但仍會進行更新。例如:如果new_password = abcdefg(長於6)並且confirm_password = abc(不一樣),則密碼更新 – user1930227 2013-02-13 12:44:33

0

林不知道,但你可以叫validatePassword()

if (new_password == confirm_new_password) 
{ 
    validatePassword(); 
} 
0

這個功能你有兩個選擇,要麼使這兩個功能的單一功能,還是讓他們兩個單獨的功能,並呼籲他們都在提交前/處理你的表格。

if (validatePasswordLength() && validatePasswordsMatch()) { 
    // Continue 
} 
+0

我寧願將這兩個函數合併爲一個函數,第二個函數來自我擁有的另一個頁面。 – user1930227 2013-02-13 12:38:23

0

你必須嘗試這個小而且工作的代碼。

if(document.getElementById("new_password").value != document.getElementById("confirm_new_password").value){ 
    alert("Passwords do not match."); 
    return false; 
} 
+0

感謝您的幫助,我現在正在工作:) – user1930227 2013-02-13 12:48:16

0
<script> 
function validatePassword() 
    { 
    var new_password = document.getElementById("new_password").value; 
    var confirm_new_password = document.getElementById("confirm_new_password").value; 

    if (document.getElementById("new_password").value.length < "5") 
    { 
    alert("Please ensure your password is at least 6 characters long."); 
    return false; 
    } 
    if (new_password == confirm_new_password) 
    { 
      alert("Password no match"); 
      return false; 
    } 
    return true; 
    } 
</script> 
<form action="" onsubmit="return validatePassword()"> 
<p>New Password: <input type="password" id="new_password" name="new_password" /></p> 
<p>Confirm Password: <input type="password" id="confirm_new_password" name="confirm_new_password" /></p> 
<p><input type="submit" value="submit" /></p> 
</form> 
+0

嗨,感謝您的幫助,但我已修復它:) – user1930227 2013-02-13 13:14:11