我正在验证表单字段,当正确填写所有表单字段时,我想启用提交按钮。我的验证工作正常,但没有将变量设置为true并检查该变量。例如......
if(password != confirm_password) {
$("#password_mismatch").css("display", "inline");
} else {
$("#password_mismatch").css("display", "none");
var password_match_valid = true;
return false;
}
此函数检查所有内容是否已经过验证并启用按钮
function validate(){
if ($('#name').val().length > 0 &&
password_match_valid == true) {
$('#signup_btn').prop("disabled", false);
}
else {
$('#signup_btn').prop("disabled", true);
}
}
造成问题的位是
var password_match_valid = true;
和
password_match_valid == true
答案 0 :(得分:4)
这设置了一个局部变量:
var password_match_valid = true;
此变量在声明它的函数外部是不可见的,尤其是validate
函数无法看到它。
解决方案是通过添加
使其全球化var password_match_valid;
在全局范围内,并删除您当前拥有的var
关键字。
但目前尚不清楚为什么测试没有直接在validate
函数中完成,因此可能会有更清晰的解决方案,具体取决于代码的其余部分。
答案 1 :(得分:1)
您的变量password_match_valid
必须是全局变量。因为它声明它在任何函数之外。
答案 2 :(得分:0)
var password_match_valid = true;
此变体仅存在于您的else
语句中。进入validate()
功能,您无法查看password_match_valid
。尝试使用全局变种