JavaScript を使えば、HTMLフォームをより柔軟に、そしてインタラクティブに制御できます。
本記事では、ラジオボタンやセレクトボックスの値取得、HTML5バリデーション、正規表現によるチェックなど、実務でよく使うフォーム操作の応用テクニックを丁寧に解説します。
初歩的な value の取得だけでなく、動的なエラー表示や入力チェックの工夫など、より実践的なポイントに踏み込んでいます。
DOM操作やイベントリスナーの基本を身につけた方が、次のステップへ進むための内容として、ぜひ参考にしてください。
解説:
ユーザーの選択肢を扱う際に欠かせないのが、ラジオボタンとチェックボックスです。
ラジオボタンは「1つだけ選ぶ」場面に、チェックボックスは「複数選択」や「ON/OFFの切り替え」に使われます。
「今どの選択肢が選ばれているか」を調べるには querySelector + :checked を使います。
valueプロパティを使えば、選択値をそのまま取得できます。
<input type="radio" name="fruit" value="りんご">りんご
<input type="radio" name="fruit" value="みかん">みかん
<input type="radio" name="fruit" value="バナナ">バナナ
<button id="checkRadio">選択中の果物を表示</button>
const btn = document.querySelector('#checkRadio');
btn.addEventListener('click', () => {
const selected = document.querySelector('input[name="fruit"]:checked');
if (selected) {
alert('選択中の果物:' + selected.value);
} else {
alert('果物が選択されていません');
}
});
checked プロパティを使えば、チェックされているかどうかを調べられます。
チェックされていれば true、されていなければ false が返ります。
また、真偽値で返ってくるので、if文の条件分岐にもそのまま利用できます。
<input type="checkbox" id="agree"> 利用規約に同意する
<button id="checkAgree">確認</button>
const checkBtn = document.querySelector('#checkAgree');
const checkbox = document.querySelector('#agree');
checkBtn.addEventListener('click', () => {
if (checkbox.checked) {
alert('同意されました!');
} else {
alert('同意が必要です。');
}
});ラジオボタン選択とチェックボックス確認の実行例
ラジオボタンとチェックボックスは、ユーザーの意思を受け取る基本的な手段です。しっかり使いこなして、フォーム操作に強くなりましょう!次のステップでは、select要素の扱い方を学びましょう!
解説:
プルダウン形式で選択肢を表示する際に使われるのが <select> 要素です。
ユーザーが選んだ値を取得したり、変更を検知したりするには valueプロパティ を使います。
value プロパティを使えば、現在選ばれている option要素の value 属性 を取得できます。
<select id="pref">
<option value="東京">東京都</option>
<option value="大阪">大阪府</option>
<option value="福岡">福岡県</option>
</select>
<button id="checkSelect">選択中の都道府県を表示</button>
const btn = document.querySelector('#checkSelect');
const select = document.querySelector('#pref');
btn.addEventListener('click', () => {
alert('選択中の都道府県:' + select.value);
});プルダウンの選択値を確認してみよう
ページ読み込み時に 最初に選ばれているのが「初期値」です。
ユーザーの選択がなければ初期値がそのまま返されます。
また、選択肢が少ない場合は、直書きでも問題ありませんが、多くの選択肢がある場合は、JavaScriptで動的に生成するのが一般的です。
このとき、選択肢データは データベース・外部API・JSONファイル などから取得されることが多いです。
select要素は、ユーザーの選択操作をシンプルに実装できる便利な部品です。
次はフォームのエラーメッセージやカスタムバリデーションについて学んでいきましょう!
解説:
入力フォームでは、条件を満たしていないときにエラーメッセージを表示するのが一般的です。
JavaScriptを使えば、条件に応じて動的にメッセージを切り替えることができ、より親切なフォームを作れます。
「未入力」「文字数不足」「形式違い」など、それぞれに応じて異なるエラーを出します。
<input type="text" id="username">
<div id="errorMsg"></div>
<button id="validateBtn">送信</button>
const input = document.querySelector('#username');
const errorDiv = document.querySelector('#errorMsg');
const button = document.querySelector('#validateBtn');
button.addEventListener('click', () => {
const value = input.value.trim();
if (value === '') {
errorDiv.textContent = 'ユーザー名を入力してください';
} else if (value.length < 4) {
errorDiv.textContent = '4文字以上で入力してください';
} else if (!/^[a-zA-Z0-9]+$/.test(value)) {
errorDiv.textContent = '半角英数字のみ使用できます';
} else {
errorDiv.textContent = '';
alert('送信完了!');
}
});エラーメッセージの出し分けを体験してみよう
フォームバリデーションは「ユーザーに優しいインターフェース」を作る上でとても重要です。
次は、HTML5のバリデーション属性を使った方法について学んでいきましょう!
解説:
HTML5では、JavaScriptを使わなくても入力制限やチェックを行う機能が用意されています。
これらを使うことで、基本的なバリデーションを手軽に実装できます。
<form>
<input type=email required placeholder="メールアドレス">
<input type=password required minlength="6" placeholder="6文字以上のパスワード">
<input type=text required pattern="^[a-zA-Z]{3,}$" placeholder="英字3文字以上のユーザー名">
<button type=submit>送信</button>
</form>上記のように属性を指定するだけで、入力漏れや文字数不足などを自動でチェックしてくれます。
例:3文字以上の半角英字を必須とする入力欄
<input type="text" required pattern="^[a-zA-Z]{3,}$" placeholder="英字3文字以上">pattern は正規表現で形式を細かく制御できます。英数字・電話番号・郵便番号などに便利です。
HTML5のバリデーションを体験してみよう
HTML5の機能をうまく活用すれば、軽量かつ堅牢なフォームバリデーションが実現できます。
次は、正規表現を活用した入力チェックをさらに掘り下げてみましょう!
解説:
正規表現(RegExp)を使えば、文字列のパターンに応じた入力チェックが行えます。
HTML5の pattern 属性や、JavaScript の RegExp オブジェクトで利用可能です。
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$^0\d{1,4}-\d{1,4}-\d{4}$^\d{3}-\d{4}$^[a-zA-Z]+$^[a-zA-Z0-9]+$<input type="text" id="email" placeholder="メールアドレス">
<button id="validate">確認</button>
const emailInput = document.querySelector('#email');
const btn = document.querySelector('#validate');
btn.addEventListener('click', () => {
const pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
const value = emailInput.value;
if (pattern.test(value)) {
alert('有効なメールアドレスです');
} else {
alert('無効な形式です');
}
});メールアドレスを正規表現で検証してみよう
pattern 属性でも正規表現を活用できるRegExp で動的なチェックも可能
正規表現を使えば、自由度の高い柔軟な入力チェックが可能になります。
これにより、パターンに基づいた厳密な検証や、複雑な条件を満たすフォーム入力チェックを実装できるようになります。