javascript中的字母数字密码验证

时间:2016-12-03 13:44:39

标签: javascript

我在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;
&#13;
&#13;

请帮忙。

1 个答案:

答案 0 :(得分:2)

我稍微改变了你的代码,因为你想要的最终结果不需要它。

要点是。

onkeyup="alphanumeric(this)"

您可以使用this传入事件绑定的元素。此外,我将事件更改为onkeyup,以便您可以验证当前键入的字符。

当您获得该值时,您可以使用该元素获取当前值。

var mypswd = input.value.trim()

警报非常烦人,它们阻止了脚本的任何进一步执行或与页面的交互,因此我输入了一个包含消息的div,以便用户获得其密码状态的实时反馈。 / p>

如果您只想进行alfanumeric验证,可以将正则表达式大大简化为/[^a-z0-9]+/i,只需检查是否有任何非字母数字字符。

&#13;
&#13;
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;
&#13;
&#13;