【发布时间】:2013-11-30 18:48:33
【问题描述】:
我有两个复选框。 “onclick”触发的checkBoxValidate函数保证两个复选框不能同时被选中。同样由“onclick”触发的 showMe 函数在单击复选框时显示隐藏的 div。一切都很好。
问题:
点击checkbox1再点击checkbox2时,checkbox1触发的div不会自动隐藏。这个想法是,当未选中复选框时,由它触发的 div 不应该是可见的......请看演示。
谢谢!
演示:
http://jsbin.com/iNuPAREq/1/edit?html,js,output
HTML:
<form action="whatever" name="comanda11" method="post" onsubmit="return validate(this)">
<input type="checkbox" name="c1" onclick="showMe('content1'); checkBoxValidate(0);">
<input type="checkbox" name="c1" onclick=" showMe('content2'); checkBoxValidate(1);">
<div id="content1" style="display:none">
Content 1
</div>
<div id="content2" style="display:none">
Content 2
</div>
</form>
JS:
function showMe(box) {
var chboxs = document.getElementsByName("c1");
var vis = "none";
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
vis = "block";
break;
}
}
document.getElementById(box).style.display = vis;
}
function checkBoxValidate(cb) {
for (j = 0; j < 8; j++) {
if (eval("document.comanda11.c1[" + j + "].checked") == true) {
document.comanda11.c1[j].checked = false;
if (j == cb) {
document.comanda11.c1[j].checked = true;
}
}
}
}
【问题讨论】:
-
为什么你不只是使用单选按钮?
-
事实上,我也想到了这一点。为什么不用收音机?你不能在点击收音机时显示/隐藏吗
-
太添加到@adeneo 的问题,通常复选框用于指示多个独立选项,当一次可以选择多个时。当您想从多个互斥的选项中进行选择时,通常会使用单选按钮。您不必这样做,但可以利用符合用户期望的优势。
-
不是一个非常简洁的解决方案,但它确实有效。 jsbin.com/iNuPAREq/3/edit
-
在
for循环之前,继续隐藏两个 div。让 for 循环重新打开正确的循环。
标签: javascript checkbox