JS:当选中另一个时取消选中框,但如果选中则取消选中

时间:2014-06-07 05:42:18

标签: javascript checkbox

我有三个复选框。我已经在使用我在这里找到的一段代码,在选中其中两个时取消选中。

function cbChange(obj) {
var cbs = document.getElementsByClassName("cb");
for (var i = 0; i < cbs.length; i++) {
    cbs[i].checked = false;
}
obj.checked = true;
}

我在复选框内使用此选项来切换状态:onchange =&#34; cbChange(this)&#34;。

但是,我还需要提供一个我不想要勾选任何方框的情况。虽然我可以通过添加单独的按钮或复选框来执行此操作,但我想知道是否可以修改上述代码或添加其他功能,以便通过onclick事件取消已勾选的框。

我尝试添加此功能(此处再次找到),但它无法正常工作:

function cbUncheck(obj)
    {
        if (obj.checked == false)
        {
            document.getElementByClassName("cb").checked = false;
        }
    }

我在复选框代码中使用它:onclick =&#34; cbUncheck(this);&#34;

欢迎提出建议! 谢谢!

3 个答案:

答案 0 :(得分:0)

你需要检查第一个复选框是否已选中.. 如果未选中复选框,则无需执行任何操作 否则取消选中其他复选框

 <input id="chk1" class="cb" type="checkbox" value="01" onchange='cbChange(this)' />
  <label for="chk1" >1</label>


  <input id="chk2" class="cb" type="checkbox" value="01" onchange='cbChange(this)' />
  <label for="chk2" >1</label>


  <input id="chk3" class="cb" type="checkbox" value="01" onchange='cbChange(this)' />
  <label for="chk3" >1</label>

javascript

function cbChange(obj) {

  if(obj.checked)
  {

     var cbs = document.getElementsByClassName("cb");
     for (var i = 0; i < cbs.length; i++) {
        cbs[i].checked = false;
        }
      obj.checked = true;
   }
}

JS BIN JSBIN EXAMPLE

答案 1 :(得分:0)

您可以使用单选按钮,以便只能选择一个(不需要脚本)。然后,如果出现其他一些情况,请清除两者(下面以按钮为例):

<form>
  <input  type="radio" name="foo" value="0">zero<br>
  <input  type="radio" name="foo" value="1">one<br>
  <button type="button" onclick="clearRadios(this.form.foo)">Clear radios</button>
</form>

功能:

function clearRadios(radioGroup) {
  for (var i=0; i<radioGroup.length; i++) {
    radioGroup[i].checked = false;
  }
}

如果您不希望用户检查无线电,请将其停用。

答案 2 :(得分:0)

以下代码简单地为您提供所需的解决方案。

 this.scan=function(index)
 {
  if( this.boxGroup[ index ].checked )
   for(var i=0, g=this.boxGroup, len=g.length; i<len; i++)
    if( i != index )
     g[i].checked = false;
 }

有关工作演示,请参阅jsfiddle