2013-02-15 59 views
0

我想限制用戶輸入的密碼範圍爲6-20個字符。但下面的功能無法正常工作。JavaScript中的長度屬性無法正常工作

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> 
+1

,爲什麼要找'pwd1',如果你不使用它呢?什麼不能正常工作?怎麼了? – gdoron 2013-02-15 07:32:42

+1

有點怪怪的'pwd1.value!= pwd2.value || pwd1.value ==''|| pwd2.value =='''cuz如果pwd1和pwd2可能不相等,爲什麼要檢查兩者是否爲空? – 2013-02-15 07:35:22

+0

@Bondye,這個代碼打擾你的唯一的東西......? – gdoron 2013-02-15 07:44:24

回答

1

在HTML5中,你可以使用pattern屬性:

<input type="password" pattern=".{6,20}" name="pwd1" size="30" id="pwd1" required placeholder="Enter 6-20 characters"></td></tr> 
0

嘗試使用這樣的正則表達式:

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

來源:.NET RegEx to validate password between 6 and 20 characters with at least one upper case letter, one lower case letter and one digit

這是一個完整的例子:

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