选中时,复选框值不会从false更改为true

时间:2013-04-11 01:46:09

标签: javascript forms checkbox

此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;
    }
}

2 个答案:

答案 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

这样可以正常使用

jsFiddle