Mak*_*nce 5 javascript forms checkbox
此 JavaScript 函数查找表单中的错误并列出它们。如果存在错误,它会创建一个错误覆盖复选框,以允许即使有错误也可以提交。目前,代码无法识别复选框何时被选中。显然第一个 if 语句总是被发现为 true。有想法吗?
function check1()
{
// c_ierrors is the id of the input tag inserted below within the c_erros div
if( document.getElementById("c_ierrors")==null || document.getElementById("c_ierrors").checked!="true" )
{
//if javascript generated form error overide checkbox does not exist or exists but is not true then list errors and don't submit the form
//code to generate divs listing errors
//
if(error=="")
{
//submit form
return true;
}
else
{
error += "<div id=\"c_erow\"><input type=\"checkbox\" id=\"c_ierrors\" name=\"override\" value=\"y\" >Override Errors</div>" //add checkbox to submit form despite errors
document.getElementById("c_errors").innerHTML=error;
alert (document.forms["cform"]["override"].checked);
return false; //stay on page don't submit form
}
}
else
{
//if override checkbox (exists) and is true
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
问题出在第一个 if 语句的第二部分,您进行比较
document.getElementById("c_ierrors").checked!="true"
Run Code Online (Sandbox Code Playgroud)
将布尔值与字符串进行比较会得到错误的结果。您可以在 JavaScript 控制台中使用以下命令进行检查:
bool_val = true
bool_val == "true" # returns false
Run Code Online (Sandbox Code Playgroud)
您要么需要比较它true,要么只是将其用作布尔值。例如
document.getElementById("c_ierrors").checked != true
Run Code Online (Sandbox Code Playgroud)
或者
!document.getElementById("c_ierrors").checked
Run Code Online (Sandbox Code Playgroud)