2025年05月08日

jquery:change(func)


このイベントの説明

jQueryの change(func) は<input><textarea><select>タグからカーソルが出たイベントを検知した時の処理を実行します。

 


構文

セレクタ.change(function(){イベントが発生した時の処理})

 


利用例

①空白文字の検出

下記のIDとパスワード欄からカーソルが出た時点で、そこに全角スペースを含む空白文字が無いかのチェックを行っています。

もし、IDとパスワードがデフォルトで表示される場合は、それを削除してから操作してみてください。

Warning: include_once(/sample/autocomplete/java_id-pass): Failed to open stream: No such file or directory in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 Warning: include_once(): Failed opening '/sample/autocomplete/java_id-pass' for inclusion (include_path='.:/usr/share/pear') in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44

上記は下記のプログラムから構成されています。

空白チェックは28〜46行の所で行っています。

<?php
	$input_submit_msg = "";
	$name	= isset($_POST['username']) ? $_POST['username']:'';
	$pass	= isset($_POST['password']) ? $_POST['password']:'';
	if($name != '' && $pass != ''){
		$input_submit_msg = '【'.$name.'】と【'.$pass.'】で登録されました。';
	}
?>
<form action='' method='post' >
	<p> アカウント: <input type='text'			name='username'	 	size='20'	value='' autocomplete='off' required></p>
	<p> パスワード: <input type='password'	name='password' 	size='20'	value='' autocomplete='current-password' required ></p>
	<input type='hidden' name='position' value=''>  		<!-- 送信ボタンが挿入されて時にjQueryでValue値を設定します-->
	<button type='button' class='login' >LOGIN</button>
	<p class='err_msg' style='color:red;'><?php echo esc_html($input_submit_msg); ?></p> 
</form>
<script>	
	$(function(){
		/******** マウスダウンの処理  *****************/
		$('[name="password"]').mousedown(function(){
			var input_uid = $('[name="username"]').val();
			if(input_uid == ''){
				$('.err_msg').html('アカウントが未入力です。<br>アカウントから入力してください。');
			}else{$('.err_msg').html('')}
		});
		$('[name="username"]').mousedown(function(){
			$('.err_msg').html('');
		});	
		/******** 入力文字のチェック  *****************/	
		$('[name="username"]').change(function(){
			var input_uid = $('[name="username"]').val();
			var id_check = input_uid.match(/[\s ]/u);
			if(id_check != null){
				$('.err_msg').html('アカウントが空白か、アカウントに空白文字が入っています。<br>リセットしますので、再入力してください。');
				$('[name="username"]').val('');
				$('[name="username"]').focus();
			}else{$('.err_msg').html('')}
		});
		$('[name="password"]').change(function(){
			var input_pass = $('[name="password"]').val();
			var pass_check = input_pass.match(/[\s ]/u);
			if(pass_check != null){
				$('.err_msg').html('パスワードが空白か、パスワードに空白文字が入っています。<br>リセットしますので、再入力してください。');
				$('[name="password"]').val('');
				$('[name="password"]').focus();
			}else{$('.err_msg').html('')}
		});
		/******** サブミット処理  *****************/	
		$('.login').click(function(){
			var input_uid = $('[name="username"]').val();
			var input_pass = $('[name="password"]').val();
			if(input_uid != '' && input_pass != ''){
				$('[name="password"]').attr('autocomplete','new-password');
				$('form').submit();
			}
		});
	});
	/******** 画面スクロール  *****************/	
	window.onload = function(){					//画面の表示位置を指定します
    var scrollPosition = <?php echo isset($_POST['position']) ? (int)$_POST['position'] : 0; ?>;
    $(window).scrollTop(scrollPosition);
	};
</script>

 

②郵便番号から住所を検索する。

郵便番号(7桁の数字又は3桁数字-4桁数字)を入力後、tabキー又は住所をクリックして下さい。

ajaxが動き住所を検索してくれます。

該当する郵便番号がない場合はエラーメッセージが表示されます。

これも試してみて下さい。

Warning: include_once(/sample/autocomplete/java_change-func): Failed to open stream: No such file or directory in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 Warning: include_once(): Failed opening '/sample/autocomplete/java_change-func' for inclusion (include_path='.:/usr/share/pear') in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44

上記は下記のプログラムから構成されています。

<p>郵便番号:<input type='text' name='post_number' class='post_number' maxlength='8'  placeholder='xxx-xxxx' style='width:8em;'  autocomplete='off' ></p>
<p class='post_check' style='color:red;'></p> 
<p>住所:<input type='text'  name='address' class='address' style='width:100%;margin-top:10px;' autocomplete='off'></p>
<script>	
	$(function(){
		$('.post_number').change(function(){
			$.ajax({
				url: 'https://zipcloud.ibsnet.co.jp/api/search?zipcode=' + $('.post_number').val(),
				dataType : 'jsonp',
			}).done(function(data) {
				if (data.results) {
					var address1 = data.results[0].address1 + data.results[0].address2 + data.results[0].address3;
					var message = '『' + address1 + '』 の番地及びマンション名等を入力してください。'; 
					var address2 = window.prompt( message );
					if(address2 != null){$('.address').val(address1 + address2);}
					$('.post_check').text('');
				} else {
					$('.post_check').text('この番号の住所はありません。郵便番号を再確信して下さい');
					$('.address').val('');
				}
			});
		});
	});
</script>

■1行目~3行目:HTML

1行目と3行目のinputフィールドはautocomplete='off'を指定してオートコンプリート機能をOFFにしています。

オートコンプリートについては イベント.mousedown(func) を参照して下さい。

■5行目から

ajax通信で『zipcloud』の郵便番号検索APIを検索する部分です。

取得しているデータはaddress1、address2、address3です。

■郵便番号検索

郵便番号から住所を検索する方法には色々な物がありますが、ここでは株式会社アイビス社が提供している『zipcloud』の郵便番号検索APIを使った事例を解説していきます。

このAPIは、jQueryのajax通信で指定されたURLに郵便番号を送ると下記の様なデータを返してくれるサービスです。

返り値 内容 備考
results[0].zipcode 郵便番号 7桁の郵便番号。ハイフンなし。
results[0].prefcode 都道府県コード JIS X 0401 に定められた2桁の都道府県コード。
results[0].address1 都道府県名
results[0].address2 市区町村名
results[0].address3 町域名
results[0].kana1 都道府県名カナ
results[0].kana2 市区町村名カナ
results[0].kana3 町域名カナ

詳しくは 郵便番号検索API を参照して下さい。

 


参考情報

その他の イベント発生のメソッド も参照してください。

 


関数一覧
  • 1.JavaScript/jQueryとは
  • 2.[JS] 変数規則と文字連結
  • 3.[JS] if文
  • 4.[JS] 配列操作
  • 5.[JS] 文字列操作
  • 6.[JS] 画面情報&操作
  • 7.[JS] Timer処理
  • console.log()
  • for
  • for in
  • for of
  • indexOf()
  • join()
  • length
  • map()
  • match()
  • Object.keys()
  • Object.values()
  • parseInt()
  • pop()
  • push()
  • replace()
  • shift()
  • slice()
  • split()
  • toString()
  • unshift()
  • 1.jQueryの導入と記述の基本
  • 2.jQueryの機能追加
  • 3.jQuery文法
  • 4.階層構造の要素セレクトと操作
  • 5.要素サイズ取得メソッド
  • animate()
  • append()
  • attr()
  • change(func)
  • click()
  • click(func)
  • css()
  • each(func)
  • effect()
  • empty()
  • fadeTo()
  • get()
  • hover(f1,f2)
  • html()
  • map(func)
  • mousedown(func)
  • prop()
  • resize(func)
  • show()、hide()
  • slideToggle()
  • submit()
  • submit(func)
  • text()
  • toggle()
  • toggleClass()
  • val()