【发布时间】:2020-07-09 19:07:19
【问题描述】:
我有两个复选框,每个复选框分别处理垂直和水平状态。两个都关没关系,但如果一个都开,另一个必须关,最重要的是两个都不能开。
我不想在这里使用 jQuery。
如果我都未选中,我先点击水平的,然后点击垂直的,它们将切换,因为水平未选中,垂直将变为选中。
但是如果我从垂直方向开始,我无法检查水平方向。
完整代码在github 上,演示在gh-pages 上运行。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Toggle</title>
</head>
<style>
.constraint {
color: #007bff;
padding: 0rem .5rem;
}
span.horz:before {
content: "\2194";
}
span.vert:before {
content: "\2195";
}
</style>
<body>
<span class="constraint">Constraint: </span>
<span class="constraint vert">
<input type="checkbox" id="vertical" onchange="constraints()">
<span class="constraint horz"></span>
<input type="checkbox" id="horizontal" onchange="constraints()">
</body>
<script type="text/javascript">
function constraints() {
inputVert = document.getElementById("vertical");
inputHorz = document.getElementById("horizontal");
console.log("initially: vert:" + inputVert.checked);
console.log("initially: horz:" + inputHorz.checked);
if (inputVert.checked) {
console.log("vert clicked -> vert:" + inputVert.checked);
console.log("vert clicked -> horz:" + inputHorz.checked);
// inputHorz = document.getElementById("horizontal");
inputHorz.checked = false;
// inputVert.checked = true;
};
if (inputHorz.checked) {
console.log("horz clicked -> vert:" + inputVert.checked);
console.log("horz clicked -> horz:" + inputHorz.checked);
// inputVert = document.getElementById("vertical");
inputVert.checked = false;
// inputHorz.checked = true;
};
}
</script>
</html>
非常感谢任何帮助,
谢谢
【问题讨论】:
标签: javascript checkbox toggle