2016-12-03 48 views
0

我在javascript中編寫了函數,用於在jsp中進行字母數字密碼驗證,並在文本框的onkeypress事件中調用該函數,但不工作。javascript中的字母數字密碼驗證

function alphanumeric(inputtxt) { 
 
    var mypswd = document.getElementById(inputtxt).value; 
 
    mypswd = mypswd.trim(); 
 
    if (mypswd == "" || mypswd == null) { 
 
    alert("Please enter password"); 
 
    } else if (!mypswd.match((/^(?=.\d)(?=.[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/)) { 
 
    alert(" password must be alphanumeric"); 
 
    } 
 
}
<form name="form1" method="post" action="Register">Username : 
 
    <br> 
 
    <input type="text" name="uname" onkeypress="return checkSpcialChar(event)" onkeydown=" alphanumeric(inputtxt)" /> 
 
    <br/>Password : 
 
    <br> 
 
    <input type="password" name="pwd" onkeypress="return checkSpcialChar(event)" /> 
 
    <br/> 
 
    <br> 
 
    <input type="submit" name="action" value="Submit" onsubmit="check()" /> 
 
    <input type="submit" value="Back" /> 
 
</form>

請幫助。

回答

2

我改變了你的代碼,因爲它有些不是你想要的最終結果所必需的。

要點是。

onkeyup="alphanumeric(this)" 

您可以使用this傳入事件綁定到的元素。我還將活動更改爲onkeyup,以便您可以驗證當前輸入的字符。

當您獲取該值時,可以使用該元素獲取當前值。

var mypswd = input.value.trim() 

警報是真的討厭,他們阻止腳本或者網頁交互的任何進一步執行,所以我把它包含郵件,使用戶得到的生活的他們的密碼的狀態反饋一個div。

如果你只是想要alfanumeric驗證,你可以大大簡化你的正則表達式到/[^a-z0-9]+/i它只是檢查任何非alfanumeric字符。

const message = document.querySelector('.message') 
 

 
function alphanumeric(input) { 
 
    var mypswd = input.value.trim() 
 
    if (mypswd == "" || mypswd == null) { 
 
    message.innerHTML = "Please enter password" 
 
    } else if (mypswd.match(/[^a-z0-9]+/i)) { 
 
    message.innerHTML = "password must be alphanumeric" 
 
    } else { 
 
    message.innerHTML = "All good in the hood" 
 
    } 
 
}
<form name="form1" method="post" action="Register"> 
 
    <div class="message">Please enter a password</div> 
 
    Passsword : 
 
    <input type="text" 
 
    name="pword" 
 
    id="pword" 
 
    onkeyup=" alphanumeric(this)" 
 
    /> 
 
</form>

+1

添加一些說明,否則它只是一段代碼... – Dekel