用于检查是否正在选中或取消选中复选框的Javascript

时间:2009-01-23 16:33:18

标签: javascript

我有一个javascript例程正在对一组复选框执行操作,但是我想根据用户是在检查框还是取消选中来设置单击复选框以进行选中或取消选中的最终操作。

不幸的是,每当我检查它是否被检查或未选中时,它都会返回“on”,表示用户总是在检查该框!任何帮助将不胜感激,我也包括了javascript。

// Uncheck all the checkboxs with the same Tax Credit
for (i=0; i<arrChecks.length; i++)
{
    var attribute = arrChecks[i].getAttribute("xid")
    if (attribute == elementName)
    {
        // if the current state is checked, unchecked and vice-versa
        if (arrChecks[i].value == "on")   // <-- This is always returning true, even if the box is being unchecked
        {
            arrChecks[i].checked = 1;
        } else {
            arrChecks[i].checked = 0;
        }

    } else {
        arrChecks[i].checked = 0;
    }
} 

7 个答案:

答案 0 :(得分:25)

您应该针对checkbox元素的checked属性进行评估。

for (i=0; i<arrChecks.length; i++)
{
    var attribute = arrChecks[i].getAttribute("xid")
    if (attribute == elementName)
    {
        // if the current state is checked, unchecked and vice-versa
        if (arrChecks[i].checked)
        {
            arrChecks[i].checked = false;
        } else {
            arrChecks[i].checked = true;
        }

    } else {
        arrChecks[i].checked = false;
    }
}

答案 1 :(得分:17)

value的{​​{1}}属性是您设置的:

checkbox

因此,当有人检查该框时,服务器会收到名为<input type='checkbox' name='test' value='1'> testvalue的变量 - 您要检查的内容不是1它(它永远不会改变,是否被检查)但复选框的value状态。

因此,如果您替换此代码:

checked

有了这个:

if (arrChecks[i].value == "on") 
{
    arrChecks[i].checked = 1;
} else {
    arrChecks[i].checked = 0;
}

它应该工作。您应该使用arrChecks[i].checked = !arrChecks[i].checked; true代替false0

答案 2 :(得分:5)

要切换复选框,您可以使用

element.checked = !element.checked;

所以你可以使用

if (attribute == elementName)
{
    arrChecks[i].checked = !arrChecks[i].checked;
} else {
    arrChecks[i].checked = false;
}

答案 3 :(得分:4)

function enter_comment(super_id) {
    if (!(document.getElementById(super_id).checked)) {
        alert('selected checkbox is unchecked now')
    } else {
        alert('selected checkbox is checked now');
    }
}

<input type="checkbox" name="a" id="1" value="1" onclick="enter_comment(this.value)" />

<input type="checkbox" name="b" id="2" value="2" onclick="enter_comment(this.value)" />

答案 4 :(得分:3)

function CHeck(){
    var ChkBox = document.getElementById("CheckBox1");
    alert(ChkBox.Checked);
}

<asp:CheckBox ID="CheckBox1" runat="server" onclick="CHeck()" />

答案 5 :(得分:0)

我不确定问题是什么,但我很确定这会解决它。

for (i=0; i<arrChecks.length; i++)
    {
        var attribute = arrChecks[i].getAttribute("xid")
        if (attribute == elementName)
        {
            if (arrChecks[i].checked == 0)  
            {
                arrChecks[i].checked = 1;
            } else {
                arrChecks[i].checked = 0;
            }

        } else {
            arrChecks[i].checked = 0;
        }
    }

答案 6 :(得分:0)

还要确保在firefox和IE中都测试它。 JS操纵复选框有一些令人讨厌的错误。