HTML5のバリデーションを検知

通常、HTML5のバリデーションはSubmitボタンを押した時にチェックが行われる。
Submitしたくない場合、checkValidity関数を使えば任意のタイミングでチェックができる。
しかし、エラーメッセージの吹き出しを表示させることはできない。吹き出しは別の方法で実装せねばならない。

サンプル

ソースコード


	<script>
	function validation_check(slt){

		var elm = $('#' + slt);
		var title = elm.attr('title');
		
		try{

			var valid=elm[0].checkValidity();
			
			if(valid == true){
				alert('正常です');

			}else{
				alert(valid + '  ' + title);

			}

		}catch( e ){
			
			throw e;
		}
	}
	</script>


	<input type="text" id="test1"  pattern="^[0-9]+$" title="数値で入力してください" value="あ">
	<input type="button" value="TEST1" onclick="validation_check('test1')" class="btn btn-primary" />
	
	




必須入力のバリデーション

サンプル


	<input type="text" id="test2"  required title="必須入力です。" value="">
	


最大文字数の制限

最大文字数の制限はmaxlength属性を指定すればよいが、 これはバリデーションでなく、昔からあるただの入力制限。

サンプル


	<input type="text" id="test3"  required maxlength="4"  title="4文字以内の必須入力です。" value="">
	


半角英数字のバリデーション

サンプル

	<input type="text" id="test4" pattern="^[0-9A-Za-z]+$" title="半角英数字で入力してください。" value="abc123XYZ">
	


半角英数字 + 一部記号のバリデーション | ついでに文字数制限も


	<input type="text" name="animal_name"  value="" required pattern="^[0-9A-Za-z!-_@]{1,50}$" maxlength="50" title="50文字以内の半角英数字入力してください" />	
	

日付のバリデーション

サンプル

	<input type="text" id="test5" pattern="[0-9]{4}(-|/)[0-9]{1,2}(-|/)[0-9]{1,2}" title="日付(Y-m-d)を入力してください。(例 2012-12-12)" value="2016-10-17">
	

※注意
区切りは「-」と「/」が有効である。
9999-99-99といった入力も正常と判定する。


日時のバリデーション

サンプル

	<input type="text" id="test6" pattern="[0-9]{4}(-|/)[0-9]{1,2}(-|/)[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}" title="日時(Y-m-d H:i:s)を入力してください。(例  2012-12-12 12:12:12)" value="2016-10-17 10:16:33">
	

※注意
日付の区切りは「-」と「/」が有効である。
9999-99-99 99:99:99といった入力も正常と判定する。


浮動小数のバリデーション

サンプル

以下のような数値表記を正常と見なす。
	<input type="text" id="test7" pattern="[+-]?[0-9]+[\.]?[0-9]*([eE][+-])?[0-9]*" title="数値を入力してください。" value="-0.12">
	

参考


パスワードのバリデーション | password

HTML

	<input type="password" value="" pattern="^[0-9A-Za-z]{8,24}" required  maxlength="24"  class="valid form-control" title="8~24文字の半角英数字で入力してください。" />
	
JavaScript

		let err_msg = '';
		if(!$('#old_pw')[0].checkValidity()){
			err_msg = 'パスワードは8~24文字の半角英数字で入力してください。';
		}
	

8文字以上且つ空入力可能

Demo

HTML

	<input type="text" id="pw1" value="" pattern="^[0-9A-Za-z]{8,24}" value=""  maxlength="24"  class="valid form-control" title="8~24文字の半角英数字で入力してください。" />
	
JavaScript

		let err_msg = 'エラーなし';
		if(!$('#pw1')[0].checkValidity()){
			err_msg = 'パスワードは8~24文字の半角英数字で入力してください。';
		}
		$('#res').html(err_msg);