1function validateForm() { 2 $.datetimepicker.setLocale('ja'); 3 let ja = { 4 ja:{ 5 months:[ 6 "1æ", 7 "2æ", 8 "3æ", 9 "4æ", 10 "5æ", 11 "6æ", 12 "7æ", 13 "8æ", 14 "9æ", 15 "10æ", 16 "11æ", 17 "12æ", 18 ], 19 dayOfWeek:[ 20 "æ¥ææ¥", 21 "æææ¥", 22 "ç«ææ¥", 23 "æ°´ææ¥", 24 "æ¨ææ¥", 25 "éææ¥", 26 "åææ¥" 27 ] 28 } 29 } 30 31 $( ".datepicker" ).datetimepicker({ 32 timepicker:false, 33 format: 'Y/m/d(D)', 34 scrollMonth : false, 35 scrollInput : false 36 }); 37 38 $( ".datetimepicker").datetimepicker({ 39 scrollMonth : false, 40 scrollInput : false, 41 format: 'Y/m/d H:i(D)', 42 step: 30 43 }); 44 45 $.validator.addMethod('filesize', function (value, element, param) { 46 let rightSize = true; 47 let validFileTypes = ["image/gif", "image/jpeg", "image/jpg", "image/png", "application/pdf"]; 48 const inputKey = element.name || element.id; 49 const form = $(element).closest('.formContact'); 50 const allFileData = form.data("fileData") || {}; 51 const files = (allFileData[inputKey] || new FormData()).getAll("files[]") || []; 52 53 for (let i=0; i<files.length; i++) { 54 if (files[i].size > param.size) rightSize = false; 55 if (validFileTypes.indexOf(files[i].type) == -1) rightSize = false; 56 } 57 return this.optional(element) || (rightSize) 58 }, '3MB以ä¸ã®ç»åãPDFãã¡ã¤ã«ã鏿ãã¦ãã ããã'); 59 60 $.validator.addMethod( 61 "email", 62 function(value, element, param) { 63 var re = new RegExp(param.regexp); 64 return this.optional(element) || re.test(value); 65 }, 66 (param) => {return `${param.name}ã®å½¢å¼ãæ£ããããã¾ããã`}); 67 68 $.validator.addMethod( 69 "postal_code", 70 function(value, element, param) { 71 var re = new RegExp(param.regexp); 72 return this.optional(element) || re.test(value); 73 }, 74 (param) => {return `${param.name}ã®å½¢å¼ãæ£ããããã¾ããã`}); 75 76 const formIds = Array.from($('.form-id')) 77 formIds.forEach((item, index) => { 78 const rulesData = $(`#${item.textContent}`).data('rules') 79 const messagesData = $(`#${item.textContent}`).data('messages') 80 $(`#${item.textContent}`).validate({ 81 errorElement: 'p', 82 onfocusout: false, 83 onkeyup: false, 84 onclick: false, 85 ignore: [], 86 rules: rulesData, 87 messages: messagesData, 88 errorPlacement: function(error, element) { 89 element.closest('dd').find('.errors').text(error[0].innerHTML) 90 }, 91 focusInvalid: false, 92 }); 93 }); 94} 95validateForm(); 96 97$('body').on('click', '.formContact .confirm-contact', function() { 98 let this_form = $(this).closest('.formContact'); 99 change_to_confirm(this_form); 100}); 101 102$('body').on('keypress', `.formContact input[type=text]`, function(e) { 103 if(e.keyCode === 13) { 104 let this_form = $(this).closest('.formContact'); 105 change_to_confirm(this_form); 106 return false; 107 } 108}); 109 110function change_to_confirm(this_form) { 111 if(this_form.valid()){ 112 this_form.prepend('<div class="wrapper_item"><div class="inner_item_txt"><p>å ¥åå 容ãã確èªã®ä¸ããéä¿¡ããããã¿ã³ãæ¼ãã¦ãã ããã</p></div></div>'); 113 $('section.widget_form.block_form').not(this_form.closest('section')).addClass('hidden-in-contact'); 114 this_form.find(`.btn-in-form`).addClass('hidden-in-contact'); 115 this_form.find(`.btn-in-confirm`).removeClass('hidden-in-contact'); 116 this_form.siblings().addClass('hidden-in-contact'); 117 this_form.find(`dd p`).addClass('hidden-in-contact'); 118 $('.errors').text('') 119 this_form.find(":input:text, select").each(function() { 120 let val = $(this).val() 121 if(val == null){ 122 val = '' 123 } 124 $(this).addClass('hidden-in-contact').after($("<span></span>").text(val.replace(/\r\n|\r|\n/g,"<br>"))); 125 }); 126 this_form.find("textarea").each(function() { 127 let val = $(this).val().replace(/\r\n|\r|\n/g,"<br>") 128 $(this).addClass('hidden-in-contact').after($("<span></span>").html(val)); 129 }); 130 this_form.find(":input:checkbox, :input:radio").each(function() { 131 $(this).addClass('hidden-in-contact') 132 $(this).next("label").addClass('hidden-in-contact') 133 if($(this).is(":checked")){ 134 $(this).next("label").after($('<span style="margin-right: 35px;"></span').text( $(this).next("label").text())); 135 } 136 }); 137 this_form.find(":input:file").each(function() { 138 $(this).addClass('hidden-in-contact'); 139 $(this).next('.file-list').addClass('hidden-in-contact'); 140 141 let validImageTypes = ["image/gif", "image/jpeg", "image/jpg", "image/png"]; 142 const inputKey = this.name || this.id; 143 let allFileLists = this_form.data("fileList") || {}; 144 let files = allFileLists[inputKey] || []; 145 146 if(files.length > 0) { 147 for (let i = files.length - 1; i >= 0; i--) { 148 let file = files[i]; 149 let fileType = file["type"]; 150 let filename = file["name"]; 151 let extension = filename.split('.')[1]; 152 if($.inArray(fileType, validImageTypes) > 0) { 153 $(this).after('<img id="output" src=' + window.URL.createObjectURL(file) +' /></br>' + '<span>' + filename + '</span></br>'); 154 } else if (extension == 'pdf'){ 155 $(this).after('<span>' + filename + '</span></br>'); 156 } 157 } 158 } 159 }); 160 } 161 else { 162 let inputs = Array.from(this_form[0].getElementsByTagName('input')).concat(Array.from(this_form[0].getElementsByTagName('textarea')))
163 inputs.forEach(item => { 164 if($(item).valid()) { 165 $(item).closest('dd').find('.errors').text('') 166 } 167 }) 168 } 169} 170 171$('body').on('click', '.formContact .back-contact', function() { 172 let this_form = $(this).closest('.formContact') 173 $('section.widget_form.block_form').not(this_form.closest('section')).removeClass('hidden-in-contact'); 174 this_form.find(`.btn-in-confirm`).addClass('hidden-in-contact'); 175 this_form.find(`.btn-in-form`).removeClass('hidden-in-contact'); 176 this_form.siblings().removeClass('hidden-in-contact'); 177 this_form.find('div:first').remove(); 178 this_form.find(`dd p`).removeClass('hidden-in-contact'); 179 this_form.find(":input:text, select, textarea").each(function() { 180 $(this).removeClass('hidden-in-contact').nextAll().not(`.errors`).not(this_form.find(`dd p`)).remove(); 181 }); 182 this_form.find(":input:checkbox, :input:radio").each(function() { 183 $(this).removeClass('hidden-in-contact') 184 $(this).next("label").removeClass('hidden-in-contact') 185 if($(this).is(":checked")){ 186 $(this).next("label").next().remove(); 187 } 188 }); 189 this_form.find(":input:file").each(function() { 190 $(this).removeClass('hidden-in-contact').nextAll().not('.errors').not('.file-list').remove(); 191 $(this).next('.file-list').removeClass('hidden-in-contact'); 192 }); 193}); 194 195$("body").on('change', '.formContact :input:file', function(e) { 196 let files = e.target.files; 197 let inputField = $(this); 198 let inputKey = this.name || this.id; 199 let form = inputField.closest('.formContact'); 200 201 let allFileData = form.data("fileData") || {}; 202 let allFileLists = form.data("fileList") || {}; 203 204 let fileData = allFileData[inputKey] || new FormData(); 205 let fileList = allFileLists[inputKey] || []; 206 207 for (let i = 0; i < files.length; i++) { 208 fileData.append("files[]", files[i]); 209 fileList.push(files[i]); 210 } 211 212 allFileData[inputKey] = fileData; 213 allFileLists[inputKey] = fileList; 214 215 form.data("fileData", allFileData); 216 form.data("fileList", allFileLists); 217 218 renderFileList(inputField); 219}); 220 221function renderFileList(inputField) { 222 let fileDisplayArea = inputField.next(".file-list"); 223 224 if (fileDisplayArea.length === 0) { 225 fileDisplayArea = $("<div class='file-list'></div>"); 226 inputField.after(fileDisplayArea); 227 } 228 229 let form = inputField.closest('.formContact'); 230 let inputKey = inputField.attr('name') || inputField.attr('id'); 231 let allFileLists = form.data("fileList") || {}; 232 let fileList = allFileLists[inputKey] || []; 233 fileDisplayArea.empty(); 234 235 fileList.forEach((file, index) => { 236 let fileItem = $(` 237 <div class="file-item" data-index="${index}" data-input-key="${inputKey}"> 238 <span>${file.name}</span> 239 <a href="javascript:void(0);" class="remove-file" data-index="${index}" data-input-key="${inputKey}"><i class="fas fa-trash-alt"></i></a> 240 </div> 241 `); 242 fileDisplayArea.append(fileItem); 243 }); 244} 245 246$("body").on("click", ".formContact .remove-file", function() { 247 let index = $(this).data("index"); 248 let form = $(this).closest('.formContact'); 249 let inputKey = $(this).data("input-key"); 250 251 let allFileLists = form.data("fileList") || {}; 252 let allFileData = form.data("fileData") || {}; 253 254 let fileList = allFileLists[inputKey] || []; 255 fileList.splice(index, 1); 256 257 let fileData = new FormData(); 258 fileList.forEach(file => fileData.append("files[]", file)); 259 260 allFileLists[inputKey] = fileList; 261 allFileData[inputKey] = fileData; 262 263 form.data("fileData", allFileData); 264 form.data("fileList", allFileLists); 265 266 let targetInput = form.find(`:input:file[name="${inputKey}"], :input:file[id="${inputKey}"]`); 267 if (fileList.length === 0) { 268 targetInput.val(''); 269 } 270 renderFileList(targetInput); 271}); 272 273 274$( "body").on('submit', '.formContact', function(e) { 275 e.preventDefault() 276 let form_this = $(this); 277 const form = this.closest("form") 278 const contactDetailIds = form.getAttribute('data-contact-detail-ids').split(',') 279 const contactId = form.getAttribute('data-contact_id') 280 const idString = form.getAttribute('data-id_string') 281 const grv3_secretkey = form_this.data('grv3_secretkey') 282 const grv3_sitekey = form_this.data('grv3_sitekey') 283 const contactDetails = form.getAttribute('data-contact-details') 284 var tag4 = $('#client-info').attr("data-client-tag4"); 285 var tag5 = $('#client-info').attr("data-client-tag5"); 286 var conversion_tag2 = form_this.find(".conversion_tag2").text() 287 var formData = new FormData(); 288 formData.append("contact_id", contactId) 289 formData.append("id_string", idString) 290 formData.append("contact_details", JSON.stringify(contactDetails)) 291 contactDetailIds.map((item) => { 292 if(item.name != "") { 293 formData.append("contact_details_ids[]", item) 294 const inputs = form_this.find("[data-contact-detail-id='" + item + "'], [data-contact-detail-id='" + item + "[]']"); 295 if(inputs.length == 1) { 296 if(inputs[0].getAttribute('type') === 'file') {
297 const inputKey = inputs[0].name || inputs[0].id; 298 const allFileData = form_this.data("fileData") || {}; 299 let files = (allFileData[inputKey] || new FormData()).getAll("files[]") || []; 300 301 for (let i = 0; i < files.length; i++) 302 formData.append(item + "[]", files[i]) 303 } else { 304 if(inputs[0].type === 'checkbox' || inputs[0].type === 'radio') { 305 const lable = $(inputs[0]).next('label') 306 let val = '' 307 if($(inputs[0]).is(":checked")) { 308 val = lable.text() 309 } 310 formData.append(item, val) 311 } 312 else { 313 formData.append(item, inputs[0].value) 314 } 315 } 316 } 317 else { 318 formData.append(item, inputValue(inputs)) 319 } 320 } 321 }) 322 if(grv3_secretkey != "" && grv3_sitekey != "") { 323 grecaptcha.ready(function() { 324 grecaptcha.execute(grv3_sitekey, {action: 'submit'}).then(function(token) { 325 formData.append("g-token", token) 326 submitForm(form, form_this, tag4, tag5, conversion_tag2, formData) 327 }); 328 }); 329 } 330 else { 331 submitForm(form, form_this, tag4, tag5, conversion_tag2, formData) 332 } 333}); 334 335function submitForm(form, form_this, tag4, tag5, conversion_tag2, formData) { 336 let request = new XMLHttpRequest(); 337 request.open("POST", form.getAttribute('data-api')); 338 request.onload = function() { 339 if (request.status == 201) { 340 let data = $.parseJSON(request.response) 341 const inner_item_txt = form_this.siblings('.inner_item_txt') 342 inner_item_txt.removeClass('hidden-in-contact').append("<p class='done_message pre-wrap'></p><p class='conversion_tag pre-wrap'></p><p class='conversion_tag2 pre-wrap'></p>"); 343 inner_item_txt.find('p').text('') 344 inner_item_txt.find('.done_message').text(data['done_message']) 345 inner_item_txt.find('.conversion_tag').text(data['conversion_tag']) 346 if(conversion_tag2.length > 0) { 347 inner_item_txt.find('.conversion_tag2').text(conversion_tag2) 348 } 349 form_this.siblings('.inner_item_txt').nextAll().addClass('hidden-in-contact'); 350 $('body').prepend(tag4); 351 $('body').append(tag5); 352 } 353 } 354 request.send(formData); 355} 356 357$("body").on('change', '.postal_code', function(e) { 358 var addressElement = this.closest("form").getElementsByClassName("address")[0] 359 $.ajax({ 360 url: `https://postal-codes-jp.azurewebsites.net/api/PostalCodes/${this.value}`, 361 type: "GET", 362 dataType: 'json', 363 success: function(data) { 364 const address = data[0].city.pref.name + data[0].city.name + data[0].name 365 addressElement.value = address 366 } 367 }) 368}); 369 370function inputValue(inputs) { 371 let value = "" 372 const checkedInputs = Array.from(inputs).filter(item => item.checked) 373 if(checkedInputs.length < 1) { 374 return value 375 } 376 377 if(checkedInputs.length == 1) { 378 value = checkedInputs[0].value 379 return value 380 } 381 value = [] 382 checkedInputs.forEach(item => { 383 value.push(item.value) 384 }) 385 return value.join(',') 386} 387 388var TERM_LOCKED_MESSAGE = 'å©ç¨è¦ç´ãã確èªã®ãããåæã«ãã§ãã¯ãå ¥ãã¦ãã ããã'; 389 390$(function () { 391 $('.confirmation-checkbox.locked').prop('checked', false); 392}); 393 394$('body').on('click auxclick', 'a.term-link', function (e) { 395 if (e.type === 'auxclick' && e.button !== 1) return; 396 var $dd = $(this).closest('dd'); 397 $dd.find('.confirmation-checkbox').removeClass('locked'); 398 var $errors = $dd.find('.errors'); 399 if ($errors.text() === TERM_LOCKED_MESSAGE) $errors.text(''); 400}); 401 402$('body').on('change', '.confirmation-checkbox.locked', function () { 403 $(this).prop('checked', false); 404 $(this).closest('dd').find('.errors').text(TERM_LOCKED_MESSAGE); 405});
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.