1/* inquiry.js â å ¥åâ確èªã®æåã§å¿ é /ä¸è´ãç»é¢å ã§æ¡å */ 2document.addEventListener('DOMContentLoaded', function () { 3 const form = document.getElementById('bsInquiryForm'); 4 if (!form) return; 5 6 const required = form.querySelectorAll('[required]'); 7 const email = form.querySelector('input[name="email"]'); 8 const email2 = form.querySelector('input[name="email_confirm"]'); 9 const privacy = document.getElementById('privacyCheck'); 10 11 function rowOf(el){ return el.closest('.form-row') || el.closest('.privacy-check'); } 12 function showErr(el, msg){ 13 const row = rowOf(el); if(!row) return; 14 row.classList.add('has-error'); 15 let p = row.querySelector('.error-message'); 16 if(!p){ p = document.createElement('p'); p.className='error-message'; row.appendChild(p); } 17 p.textContent = msg || 'å ¥åãã¦ãã ãã'; 18 } 19 function clearErr(el){ 20 const row = rowOf(el); if(!row) return; 21 row.classList.remove('has-error'); 22 const p = row.querySelector('.error-message'); if(p) p.textContent = ''; 23 } 24 25 function validate(){ 26 let ok = true; 27 required.forEach(el => { 28 const empty = (el.type === 'checkbox') ? !el.checked : !el.value.trim(); 29 if(empty){ ok=false; showErr(el); } else { clearErr(el); } 30 }); 31 if (email.value && email2.value && email.value !== email2.value){ 32 ok=false; showErr(email2, 'ã¡ã¼ã«ã¢ãã¬ã¹ãä¸è´ãã¾ãã'); 33 } 34 return ok; 35 } 36 37 required.forEach(el => el.addEventListener('input', () => clearErr(el))); 38 privacy?.addEventListener('change', () => clearErr(privacy)); 39 40 form.addEventListener('submit', function(e){ 41 if(form.dataset.validated === '1') return; 42 e.preventDefault(); e.stopImmediatePropagation(); 43 if (validate()){ form.dataset.validated='1'; form.submit(); } 44 }); 45});
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.