PageSourceSearch

https://www.higashinihonkensa.com/js/form/modal_form.js?v=1

js higashinihonkensa.com collected 2026-10-06 12:22:41 UTC 7,053 bytes, 195 lines download raw bytes

1(function ($) {
2
3	// サファリ対応
4	var ua = window.navigator.userAgent.toLowerCase();
5	if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1 && ua.indexOf('edge') === -1) {
6		$('#captchaInput').attr('oninput', '');
7	}
8
9	function validate(boxId) {
10		var validateValidate = $(boxId).validationEngine('validate');
11		return validateValidate;
12	}
13
14	// バリデーションデタッチ
15	function validateDetach(boxId) {
16		$(boxId).validationEngine('detach');
17	}
18
19	$("#validation_form").validationEngine('attach', {
20		ajaxFormValidation: true,
21		onBeforeAjaxFormValidation: beforeCall,
22		onValidationComplete: function (form, status) {
23			$('#captchaInput').removeClass('validate[required]');
24		}
25	});
26
27	function htmlspecialchars(str) {
28		return (str + '').replace(/&/g, '&')
29			.replace(/"/g, '"')
30			.replace(/'/g, ''')
31			.replace(/</g, '&lt;')
32			.replace(/>/g, '&gt;')
33			.replace(/\r?\n/g, '<br>');
34	}
35
36	function beforeCall() {
37		validateDetach('#captchaInput');
38		var captchaShow = false;
39		var captchaStatus = false;
40		var captcha_code = $('input[name="captcha_code"]').val();
41		var csrf_token = $('input[name="csrf-token"]').val();
42		var _token = $('input[name="_token"]').val();
43		if ($('#captchaInput').length) {
44			captchaShow = true;
45		}
46		/* =========== 画像認証設定 ON の場合 ========== */
47		if (captcha_code) {
48			jQuery('#captchaInput').addClass('validate[required]');
49
50			jQuery.ajax({
51				url: "/captchaValidate",
52				type: "POST",
53				data: {
54					captcha_code: captcha_code,
55					action: 'ajax'
56				},
57				cache: false,
58				dataType: 'json',
59				headers: {
60					'X-CSRF-TOKEN': jQuery('meta[name="csrf-token"]').attr('content')
61				}
62			})
63				.done(function (data) {
64					if (!data.captcha_code) {
65						$('<div class="captchaInputformError parentFormvalidation_form formError" style="opacity: 0.9; position: absolute;  display: block;"><div class="formErrorContent">上記の英数字と内容が一致しません<br></div><div class="formErrorArrow"><div class="line10"><!-- --></div><div class="line9"><!-- --></div><div class="line8"><!-- --></div><div class="line7"><!-- --></div><div class="line6"><!-- --></div><div class="line5"><!-- --></div><div class="line4"><!-- --></div><div class="line3"><!-- --></div><div class="line2"><!-- --></div><div class="line1"><!-- --></div></div></div>').insertBefore("#captchaInput");
66					} else {
67						//alert("認証コードが一致しました");
68						captchaStatus = true;
69
70						$.magnificPopup.open({
71							items: { src: '#popup_wrap' },
72							type: 'inline',
73							closeOnBgClick: false,
74							showCloseBtn: false,
75							callbacks: {
76								open: function () {
77									$('#wrap_in *').remove();
78									$('.submit_box').remove();
79									$('#popup_wrap h4').remove();
80
81									var members = [{ num: '1', name: 'kojin', title: '法人・個人' },
82									{ num: '2', name: 'onamae', title: 'お名前' },
83									{ num: '3', name: 'furigana', title: 'ふりがな' },
84									{ num: '4', name: 'sex', title: '男性・女性' },
85									{ num: '5', name: 'age', title: 'ご年齢' },
86									{ num: '6', name: 'kaisya', title: '会社名' },
87									{ num: '7', name: 'busyo', title: '部署名' },
88									{ num: '8', name: 'zip', title: '郵便番号' },
89									{ num: '9', name: 'addr', title: 'ご住所' },
90									{ num: '10', name: 'phone', title: 'お電話' },
91									{ num: '11', name: 'fax', title: 'FAX' },
92									{ num: '12', name: 'mailto', title: 'メールアドレス' },
93									{ num: '13', name: 'comment', title: 'お問い合わせ内容' },
94									{ num: '14', name: 'captcha_code', title: '認証コード' }
95									];
96
97									var obj = new Object();
98									// テキストの値を取得
99									$("#validation_form input:text").each(function () {
100										obj[this.name] = this.value
101									});
102									// チェックされた値を取得(チェックボックス・ラジオボタン)
103									$("#validation_form input:radio").each(function () { // checked OR radio
104										var checked = $('input[name="' + this.name + '"]:checked').val();
105										checked ? obj[this.name] = checked : obj[this.name] = '';
106										if (checked) {
107											var checked_name = $("label[for='" + this.name + checked + "']").text();
108											obj[this.name] = checked_name;
109										}
110									});
111									// テキストエリアの値を取得
112									$("#validation_form textarea").each(function () {
113										obj[this.name] = this.value
114									});
115
116									// 結果表示
117									var targetName = 'mail2';
118									var result = "";
119									var obj_array = new Array();
120									for (var key in obj) {
121										//var n_name = '#n_' + key;
122										//var t_key = $(n_name).text();
123										if (targetName != key) {
124											//result += '<tr><th>' + t_key + "</th><td>" + obj[key] + "</td></tr>";
125											for (var k in members) {
126												if (members[k].name == key) {
127													var text = obj[key];
128													//if( key == 'comment' ) text = text.replace(/\r?\n/g, '<br>');
129													//if (key == 'comment') text = htmlspecialchars(text);
130													obj_array[members[k].num] = '<tr><th scope="row">' + members[k].title + "</th><td>" + htmlspecialchars(text) + '</td><input type="hidden" name="' + members[k].name + '" value="' + htmlspecialchars(text) + '" /></tr>';
131												}
132											}
133										}
134									}
135									for (var k in obj_array) {
136										result += obj_array[k];
137									}
138
139									/*
140									for (var k in members) {
141											result += members[k].title;
142									}
143									*/
144									$("#wrap_in").html(result);
145									$("#wrap_in tr:odd").addClass('colored');
146									var t_conform = '<h4>入力内容をご確認ください</h4>';
147									var b_sub = '<div class="submit_box"><input type="submit" name="submitadd" id="form-host-submit" value="送信する" class="modal_button"><button type="button" class="modal_button" id="close">キャンセル</button></div>';
148									$("#wrap_in").before(t_conform).after(b_sub);
149								},
150								close: function () {
151								}
152
153							}
154						}, 0);
155
156					}
157				})
158				.fail(function (xhr) {
159					if (xhr.status === 419) {
160						var confirmReload = confirm('セッションの有効期限が切れました。画面をリロードします。');
161						if (confirmReload) {
162							window.location.reload();
163  						}
164					}
165				});
166
167		} else {
168			//alert("認証コードを入力してください");
169			$('#captchaInput').addClass('validate[required]');
170			validate('#captchaInput');
171		}
172		if (!captchaStatus) {
173			return;
174		}
175	}
176
177	$(document).on('click', '#form-host-submit', function () {
178		document.form.submit();
179	});
180	$(document).on('click', '#close', function () {
181		$.magnificPopup.close();
182	});
183	$(".refresh").click(function () {
184		$(".imgcaptcha").attr("src", "/captcha?_=" + ((new Date()).getTime()));
185	});
186
187}(jQuery));
188
189$(document).ready(function () {
190	$.ajaxSetup({
191		headers: {
192			'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
193		}
194	});
195});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.