2009-01-23 80 views
27

我有一个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; 
    } 
} 
+0

在html中检查复选框的正确方法是checked =“checked” – 2009-01-23 16:46:01

+1

您是否考虑过像jquery,prototype,moo或yui这样的库?他们使这个更容易 – 2009-01-23 19:18:45

回答

24

您应该根据复选框元素的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

谢谢你们,这个作品非常完美! – 2009-01-23 18:29:34

17

一个checkboxvalue属性是什么,你的设置:

<input type='checkbox' name='test' value='1'> 

因此,当有人将检查中,服务器接收一个名为test变量,1value - 你想要什么检查它是不是value它(它将永远不会更改,无论是否检查),但复选框的状态为checked

所以,如果你将这段代码:

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

有了这个:

arrChecks[i].checked = !arrChecks[i].checked; 

它应该工作。您应该使用truefalse而不是01

+0

因此,代码将会出现:“if(arrChecks [i] .checked)arrChecks [i] .checked = 1;”。那也不对。 – 2009-01-23 17:46:09

+1

够公平的。没有看到那里的逻辑。固定。 – 2009-01-23 19:07:50

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

此外,请确保你在Firefox和IE中测试它。 JS操作复选框有一些令人讨厌的错误。

5

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

element.checked = !element.checked; 

,所以你可以使用

if (attribute == elementName) 
{ 
    arrChecks[i].checked = !arrChecks[i].checked; 
} else { 
    arrChecks[i].checked = false; 
} 
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)" />

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

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