【JavaScript】フォームのバリデーション(入力チェックの実装方法)

JavaScript

はじめに

Webサイトやアプリケーションを作る際に、フォームは欠かせない要素のひとつです。入力内容に間違いがあったまま送信されてしまうと、サーバー側でエラーになったり、意図しないデータが保存されてしまったりする危険があります。そこで必要になるのが フォームの入力チェック(バリデーション) です。
今回は、JavaScriptでバリエーションチェックを実施する方法をLogとして記載していきたいと思います。

 

バリデーションとは

バリデーションとは、入力された値が「正しい形式かどうか」を確認する仕組みのことです。以下のようなバリエーションを組み合わせることで、実用的で安全なフォームが作れます。

 

よく使うバリデーションの種類

種類概要
必須入力チェック空欄になっていないか確認
文字数チェック最小文字数や最大文字数の制限
形式チェックメールアドレスや電話番号、郵便番号などのフォーマットが正しいか
数値チェック数値が入力されているか、範囲内かどうか
一致チェックパスワードと確認用パスワードが一致しているか

 

バリデーションの実装方法

htmlとJavaScriptを使用して、簡単な実装例を試してみます。

 

html

<form id="myForm">
  <label>ユーザー名: <input type="text" id="username" required></label><br>
  <label>メールアドレス: <input type="email" id="email" required></label><br>
  <label>パスワード: <input type="password" id="password" required></label><br>
  <button type="submit">送信</button>
</form>
<div id="error"></div>

 

JavaScript

document.getElementById("myForm").addEventListener("submit", function(event) {
  event.preventDefault(); // デフォルト送信を止める
  let errors = [];

  let username = document.getElementById("username").value.trim();
  let email = document.getElementById("email").value.trim();
  let age = document.getElementById("age").value.trim();
  let password = document.getElementById("password").value;

  // 必須入力チェック(念のためJSでも確認)
  if (username === "" || email === "" || age === "" || password === "") {
    errors.push("すべての項目を入力してください");
  }

  // 文字数チェック(ユーザー名は3文字以上)
  if (username.length < 3) {
    errors.push("ユーザー名は3文字以上にしてください");
  }

  // メール形式チェック
  let emailPattern = /^[^ ]+@[^ ]+\.[a-z]{2,}$/;
  if (!email.match(emailPattern)) {
    errors.push("正しいメールアドレスを入力してください");
  }

  // 数値チェック(年齢は数値で、0〜120の範囲)
  if (isNaN(age) || age < 0 || age > 120) {
    errors.push("年齢は0〜120の数値で入力してください");
  }

  // パスワード形式チェック(8文字以上、英字と数字を含む)
  let passwordPattern = /^(?=.*[a-zA-Z])(?=.*[0-9]).{8,}$/;
  if (!password.match(passwordPattern)) {
    errors.push("パスワードは8文字以上で、英字と数字を含めてください");
  }

  // エラーを表示
  let errorDiv = document.getElementById("error");
  if (errors.length > 0) {
    errorDiv.innerHTML = errors.join("<br>");
  } else {
    errorDiv.innerHTML = "送信成功!";
    // 後続のサーバ送信処理などを記載
  }
});

 

required 属性について

フォーム要素には、HTMLだけで簡単に入力を必須にできる required 属性 があります。ただし、required は「空欄かどうか」しかチェックできません。
文字数や形式のような細かい条件を指定するには、JavaScriptによるバリデーションが必要になります。

 

<input type="text" required>

 

まとめ

JavaScriptを使えば、フォーム入力のチェックをリアルタイムで行えるため、ユーザーが入力間違いにすぐ気づけるようになります。
今回紹介した例では「必須入力」「文字数」「形式」「数値」「一致チェック」をすべて取り入れました。実際の開発ではこれに加えて、電話番号や郵便番号などの独自フォーマットのチェックを追加したり、リアルタイムでエラーを表示したりと、さらに使いやすい工夫が可能です。
まずは今回のサンプルを動かしてみて、少しずつカスタマイズして行きましょう。

 

最後に

JavaScriptの環境構築は、この記事を参照してみてください。
【JavaScript】VSCodeでJavaScriptを使用するための環境構築を実施する – SEもりのLog JavaScript

以上、ログになります。
これからも継続していきましょう!!

JavaScriptフロントサイド関連
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

タイトルとURLをコピーしました