【JavaScript】簡単に実装できるフォームバリデーション

フォームバリデーションは、ウェブアプリケーションにおいて非常に重要な部分です。ユーザーからの入力が正確であることを確認することで、データの品質を保ち、セキュリティリスクを低減します。今回は、JavaScriptを使用してシンプルながら効果的なフォームバリデーションを実装する方法をご紹介します。

HTMLの準備

まずは、バリデーションを適用するフォームのHTMLを作成します。以下のコードは、ユーザー名、メールアドレス、パスワードを入力するシンプルなフォームです。

<!DOCTYPE html>
<html>
<head>
  <title>フォームのバリデーション</title>
</head>
<body>

  <form id="myForm">
    <label for="username">ユーザー名:</label>
    <input type="text" id="username" name="username">
    <span id="usernameError"></span>
    <br>

    <label for="email">メールアドレス:</label>
    <input type="text" id="email" name="email">
    <span id="emailError"></span>
    <br>

    <label for="password">パスワード:</label>
    <input type="password" id="password" name="password">
    <span id="passwordError"></span>
    <br>

    <input type="submit" value="送信">
  </form>

</body>
</html>

JavaScriptでのバリデーション

次に、JavaScriptを使用してバリデーションを行います。以下のコードは、各入力フィールドに独自のバリデーションルールを適用しています。

document.addEventListener("DOMContentLoaded", function() {
  const form = document.getElementById("myForm");

  form.addEventListener("submit", function(event) {
    let isValid = true;

    // ユーザー名のバリデーション
    const username = document.getElementById("username").value;
    const usernameError = document.getElementById("usernameError");
    if (username === "") {
      usernameError.textContent = "ユーザー名は必須です。";
      isValid = false;
    } else {
      usernameError.textContent = "";
    }

    // メールアドレスのバリデーション
    const email = document.getElementById("email").value;
    const emailError = document.getElementById("emailError");
    const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
    if (!emailPattern.test(email)) {
      emailError.textContent = "無効なメールアドレスです。";
      isValid = false;
    } else {
      emailError.textContent = "";
    }

    // パスワードのバリデーション
    const password = document.getElementById("password").value;
    const passwordError = document.getElementById("passwordError");
    if (password.length < 8) {
      passwordError.textContent = "パスワードは最低8文字必要です。";
      isValid = false;
    } else {
      passwordError.textContent = "";
    }

    if (!isValid) {
      event.preventDefault();
    }
  });
});

まとめ

JavaScriptを使用したフォームバリデーションは、データの品質とセキュリティを確保する効果的な手段です。この記事で紹介したようなシンプルな実装でも、多くの一般的な問題を解決できます。更に高度なバリデーションが必要な場合は、正規表現や外部ライブラリを使用することで、より堅牢なバリデーションを構築できます。