此javascript函数查找表单中的错误并列出它们。如果有错误,它会创建一个错误覆盖复选框,即使有错误也允许提交。目前,代码无法识别何时选中复选框。显然,第一个if语句总是被发现是真的。想法?
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;
}
}
答案 0 :(得分:2)
问题出在你比较的第一个if语句的第二部分
document.getElementById("c_ierrors").checked!="true"
将布尔值与字符串进行比较会得到错误的结果。您可以在JavaScript控制台中使用
进行检查bool_val = true
bool_val == "true" # returns false
您需要与true
进行比较,或者只是将其用作布尔值。 E.g。
document.getElementById("c_ierrors").checked != true
或
!document.getElementById("c_ierrors").checked
答案 1 :(得分:1)
要查找是否已选中,您无需评估其是否为真,尤其是使用字符串值时。
您只需要找到.checked
如果您想查找它是否.checked
只是使用:
!document.getElementById("c_ierrors").checked
完整代码:
document.getElementById("c_ierrors")==null||document.getElementById("c_ierrors").checked
这样可以正常使用