サイトアイコン WEBデザインMATOME

チェックボックスで入力欄を無効化!フォーム体験をスマートにする小技

フォームに「未定」などの選択肢があると、
ユーザーが他の入力欄を触らなくても済むようにしたいですよね。
今回は、チェックボックスを使って、
関連する入力フィールドを自動で無効化(disabled)する方法をご紹介します。

例えば、日付や時間の入力が「未定」の場合、その情報をスキップさせるスマートなUXを実現できます。

こんなケースで使えます

HTMLの構成(例)

まずは、フォームのHTMLを作ります。以下は「イベント日程」の入力欄の一例です。

<div class="form-group">
<label>
<input type="checkbox" name="event-undecided"> 未定
</label>
<input type="date" name="event-date">
<input type="text" name="event-time" placeholder="例)19:45">
</div>

<div class="form-group">
<label>
<input type="checkbox" name="meeting-undecided"> 未定
</label>
<input type="date" name="meeting-date">
<input type="text" name="meeting-time" placeholder="例)14:00">
</div>

JavaScriptで入力欄を制御

上記のチェックボックスに連動して、右側の入力欄を無効化するスクリプトはこちらです。

<script>
document.addEventListener('DOMContentLoaded', function () {
function handleToggle(checkboxName, inputNames) {
const checkbox = document.querySelector(`input[name="${checkboxName}"]`);
const inputs = inputNames.map(name => document.querySelector(`input[name="${name}"]`));

function updateState() {
const disabled = checkbox.checked;
inputs.forEach(input => {
if (input) {
input.disabled = disabled;
if (disabled) input.value = '';
}
});
}

checkbox.addEventListener('change', updateState);
updateState(); // ページ読み込み時にも反映
}

handleToggle('event-undecided', ['event-date', 'event-time']);
handleToggle('meeting-undecided', ['meeting-date', 'meeting-time']);
});
</script>

実装のポイント

ユーザーにやさしいフォームを作るために

このような細かい工夫によって、ユーザーは「どこを入力して、どこを無視していいのか」が直感的にわかるようになります。

特にスマートフォンユーザーにとっては、「未定を選んでも入力欄がアクティブのまま」だと混乱しがち。
今回のようなスクリプトを仕込んでおくだけで、離脱やミスを減らす効果も期待できます。

まとめ

項目内容
機能チェックボックスで入力欄を無効化
方法JavaScriptで制御
メリットUX改善・入力ミス防止・スマートな印象

もっと便利なフォームにしたい方へ

このテクニックは、他にも「ラジオボタンで表示切替」「選択肢によるバリデーション変更」など、
さまざまなフォーム改善に応用可能です。ぜひあなたのサイトでも取り入れてみてください!

モバイルバージョンを終了