0

我想限制用户输入 6-20 个字符范围内的密码。但下面的功能无法正常工作。

 function validatePass(pwd1, pwd2)
 {
var len = document.getElementById('pwd1').value;
if(len.length < 6 || len.length > 20)
{ pwd1.setCustomValidity('Enter 6-20 characters');
}
else if (pwd1.value != pwd2.value || pwd1.value == '' || pwd2.value == '' )
{
        pwd2.setCustomValidity('Password incorrect');
  } 
else 
{
    pwd2.setCustomValidity('');
}
}

html代码是:

<h4>Password</h4></td>
<td><input type="password" name="pwd1" size="30" id="pwd1" required placeholder="Enter 6-20 characters"></td></tr>
<tr><td>
<h4>Confirm Password</h4></td>
<td><input type="password" name="pwd2" id="pwd2" size="30" required onfocus="validatePass(document.getElementById('pwd1'), this);" oninput="validatePass(document.getElementById('pwd1'), this);">
</td></tr>
4

2 回答 2

1

在 HTML5 中,您可以使用模式属性:

<input type="password" pattern=".{6,20}" name="pwd1" size="30" id="pwd1" required placeholder="Enter 6-20 characters"></td></tr>
于 2013-02-15T07:33:50.897 回答
0

尝试使用这样的正则表达式:

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{6,20}$

来源:.NET RegEx 验证 6 到 20 个字符之间的密码,其中至少一个大写字母、一个小写字母和一个数字

这是一个完整的例子:

function CheckPassword(inputtxt) 
{ 
var passw = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$/;
if(inputtxt.value.match(passw)) 
{ 
alert('Correct, try another...')
return true;
}
else
{ 
alert('Wrong...!')
return false;
}
}

来源:http ://www.w3resource.com/javascript/form/password-validation.php

于 2013-02-15T07:34:16.083 回答