我正在进行客户端表单验证以检查密码是否匹配。但验证函数始终返回undefined
。
function validatePassword(errorMessage)
{
var password = document.getElementById("password");
var confirm_password = document.getElementById("password_confirm");
if(password.value)
{
// Check if confirm_password matches
if(password.value != confirm_password.value)
{
return false;
}
}
else
{
// If password is empty but confirm password is not
if(confirm_password.value)
{
return false;
}
}
return true;
}
请注意,validatePassword
是从Form对象的成员函数调用的。
function Form(validation_fn)
{
// Do other stuff
this.submit_btn = document.getElementById("submit");
this.validation_fn = validation_fn;
}
Form.prototype.submit = funciton()
{
var result;
if(this.validation_fn)
{
result = this.validation_fn();
}
//result is always undefined
if(result)
{
//do other stuff
}
}
答案 0 :(得分:12)
答案 1 :(得分:5)
您可以将返回值包装在布尔函数
中Boolean([return value])
确保所有虚假值都是假的,真实的陈述是真的。
答案 2 :(得分:2)
当然可以,但很流行。现在是2020年,这些答案都没有解决无法读取的代码的问题。 @pimvdb的答案占用更少的行,但遵循起来也相当复杂。为了简化调试和提高可读性,我应该建议将OP的代码重构为这样的格式,并采用早期返回模式,因为这可能是您不确定为什么不确定的主要原因:
function validatePassword() {
const password = document.getElementById("password");
const confirm_password = document.getElementById("password_confirm");
if (password.value.length === 0) {
return false;
}
if (password.value !== confirm_password.value) {
return false;
}
return true;
}
答案 3 :(得分:0)
在声明任何变量时不要忘记使用var / let。有关JS编译器行为的信息,请参见以下示例。
function func(){
return true;
}
isBool = func();
console.log(typeof (isBool)); // output - string
let isBool = func();
console.log(typeof (isBool)); // output - boolean