入力内容をチェックして未入力エラーを表示するテキストエリアを作る方法
入力内容をチェックして未入力エラーを表示するテキストエリアを作る方法を紹介します。このサンプルでは、HTML・CSS・JavaScriptを使用し、送信ボタンを押したときにテキストエリアが空の場合はエラーメッセージを表示し、入力されている場合はエラーを解除するフォームを作成します。お問い合わせフォームやコメント投稿などで、入力漏れを防ぎたい場面で利用できる基本的な入力チェックです。
お問い合わせ画面、会員サイトの各種フォーム、ECサイトの注文時の備考欄、管理画面の入力フォームなど、必須項目として文章の入力を求める場面で活用できます。入力されていない状態で送信しようとするとエラーメッセージを表示し、入力後に再度送信すると正常に判定されるため、利用者にも分かりやすい入力チェックを実装できます。
タイトルや説明文、ラベル、プレースホルダー、エラーメッセージはHTMLから変更でき、CSSでは色や余白、枠線、文字サイズ、角丸などを自由に調整できます。JavaScriptでは入力チェックの条件や表示するメッセージを変更できるため、用途に合わせたフォームへカスタマイズしやすく、スマートフォン・タブレット・PCでも利用できる実用的なサンプルです。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
必須入力のテキストエリアです。
何も入力せず「送信」を押すと未入力エラーを表示します。文章を入力してから再度送信するとエラーが解除されます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コード -->
<meta charset="UTF-8">
<!-- スマートフォン対応 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ページタイトル -->
<title>入力内容をチェックして未入力エラーを表示するテキストエリア</title>
<!-- CSSファイル -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- 入力フォーム全体 -->
<div class="textarea-required-validation_wrap">
<!-- タイトル -->
<div class="textarea-required-validation_title">
お問い合わせ内容
</div>
<!-- 説明文 -->
<p class="textarea-required-validation_text">
必須入力のテキストエリアです。
</p>
<!-- 入力項目 -->
<div class="textarea-required-validation_group">
<!-- ラベル -->
<label
class="textarea-required-validation_label"
for="message">
内容
</label>
<!-- 入力内容をチェックするテキストエリア -->
<textarea
id="message"
name="message"
class="textarea-required-validation_input"
placeholder="お問い合わせ内容を入力してください。"></textarea>
<!-- 未入力時に表示するエラーメッセージ -->
<div
id="message-error"
class="textarea-required-validation_error">
内容を入力してください。
</div>
</div>
<!-- 送信ボタン -->
<button
type="button"
id="submit-button"
class="textarea-required-validation_button">
送信
</button>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLで必須入力のテキストエリアと送信ボタン、エラーメッセージを配置し、CSSで通常時・フォーカス時・未入力エラー時のデザインを設定します。JavaScriptでは送信ボタンを押したときに入力内容を確認し、空白や改行だけの場合も未入力としてエラーを表示します。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlは入力フォーム全体を構成するファイルです。ページタイトル、フォーム内のタイトル、説明文、ラベル、プレースホルダー、未入力時のエラーメッセージ、送信ボタンの文字を編集できます。
style.cssはフォーム全体と各要素のデザインを設定するファイルです。横幅、余白、背景色、文字サイズ、テキストエリアの高さ、枠線、角丸、未入力エラー時の赤色表示、送信ボタンのサイズや色を変更できます。
script.jsはテキストエリアの入力内容を確認するファイルです。送信ボタンを押したときに前後の空白や改行を除去して判定し、未入力の場合は赤色の枠線とエラーメッセージを表示します。入力されている場合はエラーを解除し、「送信できました。」というダイアログを表示します。
設置方法・使い方
sampleフォルダを作成し、その中へindex.html・style.css・script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。何も入力せずに「送信」を押すと未入力エラーが表示されます。文章を入力してから再度「送信」を押すとエラーが解除され、送信可能であることを示すダイアログが表示されます。
カスタマイズできる内容
index.htmlではページタイトル、フォーム内のタイトル、説明文、ラベル、プレースホルダー、エラーメッセージ、送信ボタンの文字を変更できます。お問い合わせ内容だけでなく、コメント欄、備考欄、プロフィール紹介、管理画面のメモ欄などへ変更できます。
style.cssではフォーム全体の最大横幅、内側余白、背景色、角丸、テキストエリアの高さ、通常時・フォーカス時・エラー時の枠線色や影、送信ボタンの横幅、高さ、余白、背景色を変更できます。
script.jsでは未入力時の判定処理、エラー表示の対象、入力済みの場合に表示するダイアログの文章を変更できます。trim()を使用しているため、空白や改行だけを入力した場合も未入力として判定されます。
数値調整
style.css
padding:40px 20px;
ページ全体の内側余白です。40pxは上下、20pxは左右の余白を表します。値を大きくすると画面端との間隔が広がり、小さくすると狭くなります。
max-width:700px;
フォーム全体の最大横幅です。値を大きくすると横長になり、小さくするとコンパクトになります。
margin:40px auto;
フォーム全体の上下余白です。40pxを大きくすると上下の間隔が広がります。autoによって左右中央へ配置します。
padding:32px;
フォーム全体の内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。
border-radius:18px;
フォーム全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
margin:0 0 24px;
説明文の下側余白です。24pxを大きくすると入力項目との間隔が広がり、小さくすると狭くなります。
gap:10px;
ラベル、テキストエリア、エラーメッセージの間隔です。値を大きくすると各要素の間隔が広がります。
min-height:180px;
テキストエリアの初期の最低高さです。値を大きくすると最初から高く表示され、小さくすると低くなります。
padding:14px 16px;
テキストエリアの内側余白です。上下の14pxを大きくすると入力欄が高くなり、左右の16pxを大きくすると文字と枠線の間隔が広がります。
border:2px solid #d1d5db;
通常時のテキストエリアの枠線です。2pxを大きくすると枠線が太くなり、小さくすると細くなります。
border-radius:10px;
テキストエリアと送信ボタンの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
line-height:1.7;
入力文字の行間です。値を大きくすると行間が広がり、小さくすると詰まった表示になります。
transition:0.3s;
枠線、影、ボタンの背景色が切り替わる時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。
box-shadow:0 0 0 4px ...
フォーカス時とエラー時に表示する外側の強調範囲です。4pxを大きくすると影が広がり、小さくすると控えめになります。
font-size:14px;
エラーメッセージの文字サイズです。値を大きくすると文字が大きくなります。
min-width:120px;
送信ボタンの最低横幅です。値を大きくするとボタンが横長になります。
min-height:50px;
送信ボタンの最低高さです。値を大きくするとボタンが高くなります。
margin:20px auto 0;
送信ボタンの上側余白です。20pxを大きくするとテキストエリアとの間隔が広がります。
padding:14px 28px;
送信ボタンの内側余白です。上下の14pxを大きくすると高さが増え、左右の28pxを大きくすると横幅が広がります。
outline:3px solid ...
送信ボタンへフォーカスしたときの外枠です。3pxを大きくすると外枠が太くなります。
outline-offset:3px;
送信ボタンとフォーカス用外枠の間隔です。値を大きくすると外枠がボタンから離れます。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxによって、画面幅に合わせてフォーム全体が縮小されます。画面幅640px以下ではページとフォームの余白、テキストエリアの最低高さと内側余白を小さくし、送信ボタンを横幅いっぱいに表示するため、スマートフォン・タブレット・PCで利用できます。
コメント