4

这个 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;
    }
}
4

2 回答 2

3

问题出在您比较的第一个 if 语句的第二部分

document.getElementById("c_ierrors").checked!="true"

将布尔值与字符串进行比较会给您错误的结果。你可以在你的 JavaScript 控制台中检查这个,

bool_val = true
bool_val == "true"   # returns false

You either need to compare to true or just use it as a boolean value. E.g.

document.getElementById("c_ierrors").checked != true

or

!document.getElementById("c_ierrors").checked
于 2013-04-11T01:58:29.237 回答
1

要查找是否已检查,您无需评估它是否为真,尤其是使用 String 值。

你只需要找到它是否是.checked

如果您想查找它是否不.checked只是使用:

!document.getElementById("c_ierrors").checked

完整代码:

document.getElementById("c_ierrors")==null||document.getElementById("c_ierrors").checked

那会很好用

jsFiddle

于 2013-04-11T01:53:44.243 回答