<分区>
当我决定使用经典的 javascript 构建普通的网络表单验证时,我遇到了奇怪的错误。有几个用于输入文本字段的“onblur”处理程序和一个“表单提交”处理程序。
当我这样使用它们时:
function loginCheck() {
... return true of false
}
function passwordCheck() {
...
}
function formValidation() {
return loginCheck() && passwordCheck();
}
它没有像我预期的那样工作:如果 loginCheck 失败,则不会调用“passwordCheck”!
终于有了解决方法
function formValidation() {
ok = loginCheck();
ok &= passwordCheck();
return ok;
}
现在执行密码检查。但是当我选择:
function formValidation() {
ok = loginCheck();
ok = ok && passwordCheck();
return ok;
}
如果 loginCheck 失败,则不再调用 passwordCheck。
此外:loginCheck & passwordCheck 返回 bool 值,但 &= 运算符将其隐藏为“0”或“1”。 “0”对我的 onsubmit="return checkForm"
处理程序不起作用。我必须再次将我的 &= 结果转换为 bool 值:
function formValidation() {
ok = loginCheck();
ok &= passwordCheck();
return ok != 0;
}
这是 javascript 引擎的正常行为吗?