ユーザー入力を確実に取得!jQueryでフォーム検証をマスターしよう
jQueryを使ってHTMLフォームを検証する方法(送信せずに)
このチュートリアルでは、jQueryを使用してHTMLフォームを検証する方法について説明します。フォーム送信前にバリデーションを実行することで、ユーザー入力が正しく行われていることを確認し、エラーメッセージを表示することができます。
必要なもの
- HTMLフォーム
- jQueryライブラリ
手順
まず、検証したいHTMLフォームを作成します。以下の例では、名前、メールアドレス、およびメッセージの入力を求めるシンプルなフォームを作成しています。
<form id="myForm">
<label for="name">名前:</label>
<input type="text" id="name" name="name" required>
<label for="email">メールアドレス:</label>
<input type="email" id="email" name="email" required>
<label for="message">メッセージ:</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">送信</button>
</form>
jQueryライブラリをロードする必要があります。CDNから直接ロードしたり、ローカルファイルからロードしたりすることができます。
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
- フォーム送信イベントを処理する
submit
イベントを使用して、フォーム送信時に実行する関数を設定します。この関数内で、フォームの入力を検証します。
$(document).ready(function() {
$("#myForm").submit(function(event) {
event.preventDefault(); // フォーム送信をキャンセル
// バリデーションを実行
if (!validateForm()) {
return false;
}
// フォーム送信処理
alert("フォームが送信されました!");
return true;
});
});
- バリデーション関数を作成する
validateForm()
関数を作成して、フォームの入力を検証します。この関数では、各入力フィールドの値をチェックし、エラーがあればエラーメッセージを表示します。
function validateForm() {
var isValid = true;
// 名前
var name = $("#name").val().trim();
if (name === "") {
$("#nameError").show();
isValid = false;
} else {
$("#nameError").hide();
}
// メールアドレス
var email = $("#email").val().trim();
if (!validateEmail(email)) {
$("#emailError").show();
isValid = false;
} else {
$("#emailError").hide();
}
// メッセージ
var message = $("#message").val().trim();
if (message === "") {
$("#messageError").show();
isValid = false;
} else {
$("#messageError").hide();
}
return isValid;
}
// メールアドレスの検証
function validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+)(\.[^<>()\[\]\\.,;:\s@"]+)*)@(([^<>()\[\]\\.,;:\s@"]+)(\.[^<>()\[\]\\.,;:\s@"]+)*)$/;
return re.test(email);
}
- エラーメッセージを表示する
各入力フィールドのエラーメッセージを表示するために、span
要素を使用します。
<span id="nameError" style="display: none;">名前を入力してください。</span>
<span id="emailError" style="display: none;">正しいメールアドレスを入力してください。</span>
<span id="messageError" style="display: none;">メッセージを入力してください。</span>
例
上記のコードをすべて組み合わせると、以下のようになります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>jQueryフォーム検証</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
$("#myForm").submit(function(event) {
event.preventDefault();
if (!validateForm()) {
return false;
}
alert("フォームが送信されました!");
return true;
});
});
function validateForm() {
var isValid = true;
jQueryを使ったHTMLフォーム検証サンプルコード
HTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>jQueryフォーム検証</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
$("#myForm").submit(function(event) {
event.preventDefault();
if (!validateForm()) {
return false;
}
alert("フォームが送信されました!");
return true;
});
});
function validateForm() {
var isValid = true;
// 名前
var name = $("#name").val().trim();
if (name === "") {
$("#nameError").show();
isValid = false;
} else {
$("#nameError").hide();
}
// メールアドレス
var email = $("#email").val().trim();
if (!validateEmail(email)) {
$("#emailError").show();
isValid = false;
} else {
$("#emailError").hide();
}
// メッセージ
var message = $("#message").val().trim();
if (message === "") {
$("#messageError").show();
isValid = false;
} else {
$("#messageError").hide();
}
return isValid;
}
function validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+)(\.[^<>()\[\]\\.,;:\s@"]+)*)@(([^<>()\[\]\\.,;:\s@"]+)(\.[^<>()\[\]\\.,;:\s@"]+)*)$/;
return re.test(email);
}
</script>
</head>
<body>
<h1>jQueryフォーム検証</h1>
<form id="myForm">
<label for="name">名前:</label>
<input type="text" id="name" name="name" required>
<span id="nameError" style="display: none;">名前を入力してください。</span>
<label for="email">メールアドレス:</label>
<input type="email" id="email" name="email" required>
<span id="emailError" style="display: none;">正しいメールアドレスを入力してください。</span>
<label for="message">メッセージ:</label>
<textarea id="message" name="message" required></textarea>
<span id="messageError" style="display: none;">メッセージを入力してください。</span>
<button type="submit">送信</button>
</form>
</body>
</html>
説明
このコードは以下の処理を行います。
- HTMLフォームを作成する (
index.html
)name
、email
、message
の入力フィールドを含むフォームを作成します。- 各フィールドには
required
属性を追加して、必須項目であることを示します。
- jQueryライブラリをロードする (
index.html
)<script>
タグを使用して、CDNからjQueryライブラリをロードします。
- フォーム送信イベントを処理する (
script.js
)- この関数内で、
event.preventDefault()
を使用してフォーム送信をキャンセルし、validateForm()
関数を呼び出してバリデーションを実行します。
- この関数内で、
- バリデーション関数を作成する (
script.js
)validateForm()
関数を作成して、フォームの入力を検証します。- この関数では、各入力フィールドの値をチェックし、エラーがあれば
span
要素を表示してエラーメッセージを表示します。 validateEmail()
関数を使用して、メールアドレスの形式が正しいかどうかをチェックします。
- エラーメッセージを表示する (
index.html
)span
要素を使用して、各入力フィールドのエラーメッセージを定義します。- CSS (
style.css
) を使用して、エラーメッセージを非表示にしておきます。
使い方
- 上記の
jQueryを使ったHTMLフォーム検証の代替方法
HTML5の制約属性
HTML5には、いくつかの制約属性が導入されており、フォーム入力の検証を簡単に行うことができます。例えば、以下のような属性があります。
required
: この属性が設定されたフィールドは必須入力になります。type="email"
: この属性が設定されたフィールドには、メールアドレス形式の入力のみを許可します。pattern
: この属性を使用して、入力値のパターンを指定することができます。min
andmax
: この属性を使用して、入力値の最小値と最大値を制限することができます。
これらの制約属性を使用することで、JavaScriptコードを書かなくても基本的な検証を行うことができます。
<form id="myForm">
<label for="name">名前:</label>
<input type="text" id="name" name="name" required>
<label for="email">メールアドレス:</label>
<input type="email" id="email" name="email" required>
<label for="message">メッセージ:</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">送信</button>
</form>
JavaScriptライブラリ
jQuery以外にも、フォーム検証に役立つJavaScriptライブラリがいくつかあります。例えば、以下のようなライブラリがあります。
これらのライブラリは、より高度な検証機能を提供しており、複雑なフォームを検証するのに役立ちます。
サーバーサイドの検証
クライアントサイドの検証に加えて、サーバーサイドでもフォーム入力の検証を行うことが重要です。サーバーサイドの検証を行うことで、改ざんや不正な送信を防ぐことができます。
サーバーサイドの検証は、PHP、Java、Pythonなどのサーバーサイド言語を使用して行うことができます。
HTMLフォームを検証するには、様々な方法があります。それぞれの方法には長所と短所があるので、自分のニーズに合った方法を選択することが重要です。
jquery html validation