我有三个复选框。我已经在使用我在这里找到的一段代码,在选中其中两个时取消选中。
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;
欢迎提出建议! 谢谢!
答案 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