我在javascript中编写函数用于在jsp中进行字母数字密码验证,并在文本框的onkeypress事件上调用该函数但不起作用。
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>
&#13;
请帮忙。
答案 0 :(得分:2)
我稍微改变了你的代码,因为你想要的最终结果不需要它。
要点是。
onkeyup="alphanumeric(this)"
您可以使用this
传入事件绑定的元素。此外,我将事件更改为onkeyup
,以便您可以验证当前键入的字符。
当您获得该值时,您可以使用该元素获取当前值。
var mypswd = input.value.trim()
警报非常烦人,它们阻止了脚本的任何进一步执行或与页面的交互,因此我输入了一个包含消息的div,以便用户获得其密码状态的实时反馈。 / p>
如果您只想进行alfanumeric验证,可以将正则表达式大大简化为/[^a-z0-9]+/i
,只需检查是否有任何非字母数字字符。
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"
}
}
&#13;
<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>
&#13;