JavaScriptを使うと、チェックボックスの中間状態を表すのに、indeteminate
プロパティを使えます。
以下のHTMLをブラウザで表示すると、チェックボックスとボタンが表示されます。ボタンを押すと、チェックボックスが中間状態になります。
<meta charset="utf-8">
<input type="checkbox" id="test" onchange="showAlert()">
<input type="button" onclick="toIndeterminate()" value="チェックを中間状態にする">
<script>
let checkbox = document.getElementById("test");
let showAlert = function(){window.alert("alert")};
let toIndeterminate = function(){checkbox.indeterminate = true};
</script>
ところがどうやらIEでは、チェックを中間状態にしてから、チェックボックスをクリックしても、onchange
イベントは発生しないようです。
仕方ないので、onclick
にすることで対応しました。
<meta charset="utf-8">
<input type="checkbox" id="test" onclick="showAlert()">
<input type="button" onclick="toIndeterminate()" value="チェックを中間状態にする">
<script>
let checkbox = document.getElementById("test");
let showAlert = function(){window.alert("alert")};
let toIndeterminate = function(){checkbox.indeterminate = true};
</script>