jQueryのchangeイベントが発火しない時の対処法

Contact Form 7にjQueryで確認画面を作成した時、住所自動入力の値が確認画面と送信の両方で取得できない問題を改善した際の対処法です。

今回は自動入力の値にフォーカスが当たらないことが原因のため、該当のテキストエリアを「setInterval」で定期的に監視するようにしました。

入力欄の内容が変わった際の処理に追加↓


setInterval(function() {
	jQuery('監視したい要素、または監視したいid、class').each(function() {
		// 現在の値を取得し、以前の値と比較する
		var currentValue = jQuery(this).val();
		if (jQuery(this).data('lastValue') !== currentValue) {
			jQuery(this).data('lastValue', currentValue);
			// 値が変更されていたら、ここで処理を実行
			console.log('値が変更されました:', currentValue);
			// 必要に応じて手動で change イベントをトリガー
			jQuery(this).trigger('change');
		}
	});
}, 100); // 100ミリ秒ごとにチェック

定期的なデータ更新により無事、入力値を確認画面と送信で取得できるようになりました!