我有两个复选框,每个复选框分别处理垂直和水平状态。如果两者都关闭都可以,但如果一个在关闭,则必须关闭,最重要的是两个都不能打开。
我不想在这里使用jQuery。
如果我都未选中并且我点击水平线然后垂直线,它们将切换,因为水平未经检查而垂直将被检查。
但是如果我以垂直方式开始的另一种方式,我无法检查水平。
<!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>
非常感谢任何帮助,
由于
答案 0 :(得分:2)
With JQuery you can do it like this, hope this help you
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!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">
<span class="constraint horz"></span>
<input type="checkbox" id="horizontal">
</body>
<script type="text/javascript">
$('#vertical').change(function() {
if($(this).is(":checked")){
$('#horizontal').attr('checked', false);
}
});
$('#horizontal').change(function() {
if($(this).is(":checked")){
$('#vertical').attr('checked', false);
}
});
</script>
</html>
答案 1 :(得分:1)
这是使用输入广播的经典场景。这会强制用户选择最多一个选项。 https://www.w3schools.com/html/tryit.asp?filename=tryhtml_radio
答案 2 :(得分:0)
基于@Leonardo's answer,您可以将其进一步简化为以下内容:
$('#vertical').on("change", function() {
$('#horizontal').attr('checked', !$(this).is(":checked"));
});
$('#horizontal').on("change", function() {
$('#vertical').attr('checked', !$(this).is(":checked"));
});