Javascript 密码验证在登录表单中不起作用

Javascript 密码验证在登录表单中不起作用,javascript,passwords,Javascript,Passwords,密码验证在登录表单中不起作用。这是我的密码: function verifyPassword() { var str = document.getElementById("t1").value; if (str.match(/[a-z]/g) && str.match(/[A-Z]/g) && str.match(/[0-9]/g) && str.match(/[^a-zA-Z\d]/g) &am

密码验证在登录表单中不起作用。这是我的密码:

function verifyPassword() {
  var str = document.getElementById("t1").value;
  if (str.match(/[a-z]/g) &&
    str.match(/[A-Z]/g) &&
    str.match(/[0-9]/g) &&
    str.match(/[^a-zA-Z\d]/g) &&
    str.length >= 8)
    return true;
  else
    return false;
}

您应该调用密码字段的
change
事件和/或表单的submit事件中的函数,而不是表单的
click
事件。您需要测试返回值并做一些事情

document.getElementById('t1').addEventListener('change', function() {
    if (!verifyPassword()) {
        alert("Invalid password");
    }
}
document.getElementByTagName('form')[0].addEventListener('change', function(event) {
    if (!verifyPassword()) {
        event.preventDefault();
        alert("Invalid password");
    }
}

下面您有一个更干净的代码,并且正在检查密码,您必须有:小写、大写字符和数字。
^
符号表示密码的顺序必须为:小写、大写、数字,并且必须超过8个字符

语法
?=.[x]
意味着字符串中必须包含条件
x

您的旧代码只检查字符串是否包含这些字符(小写、大写字符、数字),但没有设置必须包含所有这些字符的条件,对于您的密码系统来说,这是无用的

函数验证密码(){
var str=document.getElementById(“t1”).value;
var regEx=newregexp(“^(?=.[a-z])(?=.[a-z])(?=.[0-9])(?=.{8,})”;
if(正则表达式测试(str)&&
str.length>=8)
控制台日志(“良好”)
其他的
控制台日志(“坏”)
}

密码
验证

显示如何调用函数。仅供参考,通常
如果(条件)返回true;否则返回false
可以写成简单的
返回条件match()
时,不需要使用
g
标志。PasswordNothing调用
verifyPassword()