密码验证协助
Password Validation Assistance
我正在尝试在JS中验证密码;密码应该不超过8个字符,它应该匹配,并且应该在用户点击表单提交之前通知他们错误。
注意:我的表单在检查控制台时返回null,可能是什么问题?我在页面上还有其他JS代码,而不仅仅是密码代码
我做了这个似乎不起作用:
var password1 = document.getElementById("pwd1");
var password2 = document.getElementById("pwd2");
var passwordValidity = function() {
if (password1.value.length >= 8 != password2.value.length >= 8) {
password1.innerHTML="Oops! Passwords must be at least 8 characters!";
password1.style.background="red";
} else {
pwd2Hint.innerHTML =" Your passwords don't match";
}
};
password1.addEventListener("keyup", passwordValidity, false);
password2.addEventListener("keyup", passwordValidity, false);
var form = document.getElementById("hw4Form");
form.addEventListener("submit", function (event) {
passwordValidity();
event.preventDefault();
如有任何帮助,我们将不胜感激。。
您有两个问题:
-
passwordValidity
中的一些逻辑有点错误 -
您没有让
passwordValidity
告诉它的调用者发生了什么(例如,它需要返回一些东西)。
固定1:
这并不是代码所期望的:
if (password1.value.length >= 8 != password2.value.length >= 8) {
只有当其中一个密码字段的长度小于8,而另一个字段的长度大于或等于8时,才会出现这种情况。
你试图把两件不能结合的东西结合起来。相反:
if (password1.value.length < 8) {
// ...show must be at least 8 error...
} else if (password1.value != password2.value) {
// ...show "they don't match" error
} else {
// All okay
}
修复2:只需让它返回一个标志(可能会更改其名称以明确它是这样做的)。结合以上:
var isPasswordValid = function() {
var valid = false;
if (password1.value.length < 8) {
password1.innerHTML = "Oops! Passwords must be at least 8 characters!";
} else if (password1.value != password2.value) {
pwd2Hint.innerHTML =" Your passwords don't match";
} else {
// All okay
pwd2Hint.innerHTML = "";
valid = true;
}
return valid;
};
然后使用它:
form.addEventListener("submit", function (event) {
if (!isPasswordValid()) {
event.preventDefault();
}
}, false);
旁注:当密码太短时,我不会替换password1
的值。一方面,它通常是一个type="password"
字段,显示字符的占位符,而不是可读的;另一方面,这是一件非常不寻常的事情,会让用户感到惊讶,因为他们通常认为你没有这样做。要么保留它,要么清除它,并使用另一个提示字段,就像对password2
所做的那样,用于显示错误。
我会将passwordValidity
函数更改为返回true或false,然后将提交更改为
form.addEventListener("submit", function (event) {
event.preventDefault();
return passwordValidity();
您的方法存在一些问题。这样想:
-
您希望何时进行此比较?如果您在提交第一个字段后立即执行验证,那么第二个字段肯定不会完成。我会根据需要设置两个字段,并对第二个字段的模糊进行验证。
-
修复函数的条件:
if (password1.value.length >= 8 != password2.value.length >= 8) {
将!=
更改为&&
,您需要一个AND运算符,并确保两个条件都检查到相反的情况。还要考虑检查最小长度。
按照此函数的编写方式,if
和else
都被视为错误。为第二个错误输入else if
,为成功案例输入else
。
- 从您的条件中返回true或false,这样提交事件监听器就可以知道验证期间发生了什么
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 如何在javascript中验证密码、手机号码和电子邮件
- 验证密码字段是否为空
- 使用javascript验证密码并取消表单提交
- Jquery 验证密码强度大写和小写
- Reg ex-验证密码条件-三分之二
- 使用angular.js验证密码失败
- 用于验证密码字段的正则表达式
- 无法使用angular.js使用reg exp验证密码字段
- 使用提交限制验证密码时出错
- 模式来验证密码匹配
- Jquery.验证密码相等-不显示错误
- Javascript regex验证密码字符串(转义标点符号)
- jQuery -验证密码
- jQuery和javascript表单验证:密码字段参数未定义,密码确认ok
- 动态验证密码规则
- 如何在angular js中验证密码
- 使用ajax与javascript提示验证密码
- 验证密码输入类型框上的输入是否正确,显示将链接到另一个页面的按钮
- JavaScript要验证:密码不能是EmailID的子字符串