2013-02-13 237 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