jQuery Validation 応用編! 2021.05.16 SUN

jQuery Validation 応用編!
目次

jQuery Validation

フォームの入力チェックを行うjQueryのプラグインです。
jQuery Validationなんて今更ですが、古いサイトのメンテナンスなどでまだまだ出てきますので、 ここにメモしたいと思います。

導入

CDN https://cdnjs.com/libraries/jquery-validate

上記サイトより読み込みます。もちろんjQueryも必須です。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/jquery.validate.min.js"></script>

サンプルのフォーム

下記は単純なフォームの例です。
email_confirmは確認用のE-mailとします。

<form>  
	<input type="radio" name="lang" value="html" checked="checked">HTML
	<input type="radio" name="lang" value="css">CSS
	お名前:<input name="name" type="text">
	E-mail:<input name="email" type="text">
	E-mail確認用:<input name="email_confirm" type="text">
	<input type="submit" value="送信">
</form>

上記フォームに対してバリデーションを設定する場合は、下記のように記述します。

$(function() {
    var validator = $("form").validate();
})

ルールを記述

ルールを記述します。requiredは必須項目です。 nameが必須の場合は下記のようになります。

var validator = $('form').validate({
    rules: {
        name: {
            required: true
        }
    }
})

日本語化

このままでは、メッセージが英語で出力されるので、日本語化します。

var validator = $('form').validate({
    rules: {
        name: {
            required: true
        }
    },
    messages: {
        name: {
          required: "お名前を入力してください。"
        }
     }
})

再入力のメールを検証する

再入力のメールと一致しているか検証するには、下記のようにします。
emailと入れるだけで正しいemail形式かチェックしてくれます。

var validator = $('form').validate({
	rules: {
		name: {
			required: true
		},
		email: {
			required: true,
			email: true
		},
		email_confirm: {
			equalTo: "[name=email]",
			required: true,
			email: true
		}	
	},
	messages: {
		name: {
			required: "お名前を入力してください。"
		},
		email: {
			required: 'E-mailは必須項目です。',
			email: 'E-mailの形式が正しくありません。',
		},
		email_confirm: {
			equalTo: '再入力したE-mailが一致しません。',
			required: '確認用E-mailは必須項目です。',
			email: '確認用E-mailの形式が正しくありません。'
		}
	}
})

条件付きで検証したい

サンプルのフォームのradioボタンのlangのvalueが「html」の場合にnameを必須項目にします。
requiredの個所でif文ぽく記述することで可能です。

name: {
	  required: function(element){ return $('input[name=lang]:checked').val() == 'html';}
},

入力チェックOKか取得したい

valid()でtrueかfalseを取得できます。

if (validator.valid()) {
	  なにかしたいこと
} else {
	  validator.focusInvalid();
}

動作サンプル

HTML
CSS
お名前:
E-mail:
E-mail確認用: