(function( $ ) { // global variable init var mailform_dt = $( 'form#mail_form dl dt' ); var start_time = 0; var stop_time = 0; var writing_time = 0; var confirm_window = 1; start_time = new Date(); // function resize function resize() { $( '.loading-layer' ).css({ 'width' : $( window ).width() + 'px', 'height' : $( window ).height() + 'px' }); } // function slice_method function slice_method( el ) { var dt = el.parents( 'dd' ).prev( 'dt' ); var dt_name = dt.html().replace( /.*?<\/span>/gi, '' ); dt_name = dt_name.replace( /.*?<\/em>/gi, '' ); dt_name = dt_name.replace( //gi, '' ); dt_name = dt_name.replace( /<\/i>/gi, '' ); dt_name = dt_name.replace( //gi, '' ); dt_name = dt_name.replace( /<\/u>/gi, '' ); dt_name = dt_name.replace( /^/gi, '' ); dt_name = dt_name.replace( /
|
/gi, '' ); return dt_name; } // function error_span function error_span( e, dt, comment, bool ) { if ( bool == true ) { var m = e.parents( 'dd' ).find( 'span.error_blank' ).text( dt + 'が' + comment + 'されていません' ); } else { var m = e.parents( 'dd' ).find( 'span.error_blank' ).text( '' ); } } // function compare_method function compare_method( s, e ) { if ( s > e ) { return e; } else { return s; } } // function hidden_append function hidden_append( name, value ) { $( '' ) .attr({ type: 'hidden', id: name, name: name, value: value }) .appendTo( $( 'p#form_submit' ) ); } // function required_check function required_check(isSend) { var error = 0; var scroll_point = $( 'body' ).height(); for ( var i = 0; i < mailform_dt.length; i++ ) { // required input if ( mailform_dt.eq(i).next( 'dd' ).find( 'input' ).length && mailform_dt.eq(i).next( 'dd' ).hasClass('required') ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'input' ); var dt_name = slice_method( elements.eq(0) ); if ( elements.eq(0).attr( 'type' ) == 'radio' || elements.eq(0).attr( 'type' ) == 'checkbox' ) { var list_error = 0; for ( var j = 0; j < elements.length; j++ ) { if ( elements.eq(j).is( ':checked' ) == '' ) { list_error++; } } if ( list_error == elements.length ) { error_span( elements.eq(0), dt_name, '選択', true ); error++; scroll_point = compare_method( scroll_point, elements.eq(0).offset().top ); } else { error_span( elements.eq(0), dt_name, '', false ); } } else { var list_error = 0; var list_error_or = 0; for (var j = 0; j < elements.length; j++) { if (elements.eq(j).val() == '' && elements.eq(j).hasClass('or') ) { list_error_or++; } else if (elements.eq(j).val() == '') { list_error++; } } if (list_error_or == elements.length) { list_error++; } if ( list_error != 0 ) { error_span( elements.eq(0), dt_name, '入力', true ); error++; scroll_point = compare_method( scroll_point, elements.eq(0).offset().top ); } else { error_span( elements.eq(0), dt_name, '', false ); } } } // required select if ( mailform_dt.eq(i).next( 'dd' ).find( 'select' ).length && mailform_dt.eq(i).next( 'dd' ).hasClass('required') ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'select' ); var dt_name = slice_method( elements.eq(0) ); var list_error = 0; for ( var j = 0; j < elements.length; j++ ) { if ( elements.eq(j).val() == '' ) { list_error++; } } if ( list_error != 0 ) { error_span( elements.eq(0), dt_name, '選択', true ); error++; scroll_point = compare_method( scroll_point, elements.eq(0).offset().top ); } else { error_span( elements.eq(0), dt_name, '', false ); } } // required textarea if ( mailform_dt.eq(i).next( 'dd' ).find( 'textarea' ).length && mailform_dt.eq(i).next( 'dd' ).hasClass('required') ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'textarea' ); var dt_name = slice_method( elements.eq(0) ); if ( elements.eq(0).val() == '' ) { error_span( elements.eq(0), dt_name, '入力', true ); error++; scroll_point = compare_method( scroll_point, elements.eq(0).offset().top ); } else { error_span( elements.eq(0), dt_name, '', false ); } } // no-required email if ( mailform_dt.eq(i).next( 'dd' ).find( 'input' ).length && mailform_dt.eq(i).next( 'dd' ).find( 'input' ).eq(0).attr( 'type' ) == 'email' ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'input' ); var dt_name = slice_method( elements.eq(0) ); if( elements.eq(0).val() != '' && ! ( elements.eq(0).val().match(/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/) ) ) { elements.eq(0).parents( 'dd' ).find( 'span.error_format' ).text( '正しいメールアドレスの書式ではありません。' ); error++; scroll_point = compare_method( scroll_point, elements.eq(0).offset().top ); } else { elements.eq(0).parents( 'dd' ).find( 'span.error_format' ).text( '' ); } } //////////////////////////////////////////////////////////////////////////////////////// //2017年8月4日(金)14:20:01追加 //////////////////////////////////////////////////////////////////////////////////////// //------------------------------------------------------------------------------- // 入力チェック(半角のみ) //------------------------------------------------------------------------------- if ( mailform_dt.eq(i).next( 'dd' ).find( 'input' ).length && mailform_dt.eq(i).next( 'dd' ).find( 'input' ).eq(0).hasClass('hankaku') ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'input' ); var dt_name = slice_method( elements.eq(0) ); if ( elements.eq(0).val() != '' && CheckLength(elements.eq(0).val(), 1)) { elements.eq(0).parents( 'dd' ).find( 'span.error_blank' ).text( '半角英数字ではありません' ); error++; scroll_point = compare_method( scroll_point, elements.eq(0).offset().top ); } else { // elements.eq(0).parents( 'dd' ).find( 'span.error_blank' ).text( '' ); } } //------------------------------------------------------------------------------- // 入力チェック(半角数字のみ) //------------------------------------------------------------------------------- if ( mailform_dt.eq(i).next( 'dd' ).find( 'input' ).length && mailform_dt.eq(i).next( 'dd' ).find( 'input' ).eq(0).hasClass('number') ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'input' ); var dt_name = slice_method( elements.eq(0) ); if ( elements.eq(0).val() != '' && !inputCheckNum(elements.eq(0).val())) { elements.eq(0).parents( 'dd' ).find( 'span.error_blank' ).text( '半角数字ではありません' ); error++; scroll_point = compare_method( scroll_point, elements.eq(0).offset().top ); } else { // elements.eq(0).parents( 'dd' ).find( 'span.error_blank' ).text( '' ); } } //------------------------------------------------------------------------------- // 入力チェック(カナのみ) //------------------------------------------------------------------------------- for(var j = 0 ; j<=1 ; j++ ){ if ( mailform_dt.eq(i).next( 'dd' ).find( 'input' ).length && mailform_dt.eq(i).next( 'dd' ).find( 'input' ).eq(j).hasClass('kana') ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'input' ); var dt_name = slice_method( elements.eq(j) ); if ( elements.eq(j).val() != '' && !inputCheckKana(elements.eq(j).val())) { elements.eq(j).parents( 'dd' ).find( 'span.error_blank' ).text( 'カタカナではありません' ); error++; scroll_point = compare_method( scroll_point, elements.eq(j).offset().top ); } else { // elements.eq(j).parents( 'dd' ).find( 'span.error_blank' ).text( '' ); } } } //------------------------------------------------------------------------------- // 入力チェック(ひらがなのみ) //------------------------------------------------------------------------------- for(var j = 0 ; j<=1 ; j++ ){ if ( mailform_dt.eq(i).next( 'dd' ).find( 'input' ).length && mailform_dt.eq(i).next( 'dd' ).find( 'input' ).eq(j).hasClass('hirakana') ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'input' ); var dt_name = slice_method( elements.eq(j) ); if ( elements.eq(j).val() != '' && !inputCheckHirakana(elements.eq(j).val())) { elements.eq(j).parents( 'dd' ).find( 'span.error_blank' ).text( 'ひらがなではありません' ); error++; scroll_point = compare_method( scroll_point, elements.eq(j).offset().top ); } else { // elements.eq(j).parents( 'dd' ).find( 'span.error_blank' ).text( '' ); } } } /**************************************************************** * 全角/半角文字判定 * 引数 : str チェックする文字列 * flg 0:半角文字、1:全角文字 * 戻り値: true:含まれている、false:含まれていない ****************************************************************/ function CheckLength(str,flg) { for (var i = 0; i < str.length; i++) { var c = str.charCodeAt(i); // Shift_JIS: 0x0 ~ 0x80, 0xa0 , 0xa1 ~ 0xdf , 0xfd ~ 0xff // Unicode : 0x0 ~ 0x80, 0xf8f0, 0xff61 ~ 0xff9f, 0xf8f1 ~ 0xf8f3 if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) { if(!flg) return true; } else { if(flg) return true; } } return false; } /**************************************************************** * 半角数字 判定 * 引数 : val チェックする文字列 * 戻り値: true:含まれている、false:含まれていない ****************************************************************/ function inputCheckNum(val) { if (val.match(/[^0-9\-]+/)) { return false; } return true; } /**************************************************************** * カナ 判定 * 引数 : val チェックする文字列 * 戻り値: true:含まれている、false:含まれていない ****************************************************************/ function inputCheckKana(val) { if (val.match(/^[\u30A0-\u30FF  ]+$/)) { return true; } return false; } /**************************************************************** * かな 判定 * 引数 : val チェックする文字列 * 戻り値: true:含まれている、false:含まれていない ****************************************************************/ function inputCheckHirakana(val) { // ひらがなチェック if (val.match(/^[\u3040-\u309F  ]+$/)) { return true; } return false; } //------------------------------------------------------------------------------- // wordcheck(150words) //------------------------------------------------------------------------------- for (var j = 0; j <= 1; j++) { if (mailform_dt.eq(i).next('dd').find('textarea').length && mailform_dt.eq(i).next('dd').find('textarea').eq(j).hasClass('word150')) { var elements = mailform_dt.eq(i).next('dd').find('textarea'); //var dt_name = slice_method( elements.eq(j) ); if (elements.eq(j).val() != '' && !checkWordLen(elements.eq(j).val())) { elements.eq(j).parents('dd').find('span.error_blank').text('150ワードを超えました'); error++; scroll_point = compare_method(scroll_point, elements.eq(j).offset().top); } else { // elements.eq(j).parents( 'dd' ).find( 'span.error_blank' ).text( '' ); } function checkWordLen(txt) { //alert(txt); var wordLen = 150; //最大語長 var len = txt.split(/[\s]+/); if (len.length > wordLen) { return false; } return true; } } } //------------------------------------------------------------------------------- // strLenCheck(150str) //------------------------------------------------------------------------------- for (var j = 0; j <= 1; j++) { if (mailform_dt.eq(i).next('dd').find('textarea').length && mailform_dt.eq(i).next('dd').find('textarea').eq(j).hasClass('str150')) { var elements = mailform_dt.eq(i).next('dd').find('textarea'); //var dt_name = slice_method( elements.eq(j) ); if (elements.eq(j).val() != '' && !chkStrLen(elements.eq(j).val())) { elements.eq(j).parents('dd').find('span.error_blank').text('150文字を超えました'); error++; scroll_point = compare_method(scroll_point, elements.eq(j).offset().top); } else { // elements.eq(j).parents( 'dd' ).find( 'span.error_blank' ).text( '' ); } function chkStrLen(txt) { //alert(txt.length); var strLen = 150; //最大文字数 if (txt.length > strLen) { return false; } return true; } } } //////////////////////////////////////////////////////////////////////////////////////// //追加終了 //////////////////////////////////////////////////////////////////////////////////////// } //------------------------------------------------------------------------------- // 画像認証チェック //------------------------------------------------------------------------------- if ( $('input#captcha_code').length) { var elements = $('input#captcha_code'); $.ajax({ url: "securimage/securimage_check.php", data: { "captcha_code": elements.val() }, async: false, success: function (response) { if(response==="false"){ elements.eq(0).parents( 'dd' ).find( 'span.error_blank' ).text( '画像認証が正しくありません。' ); error++; scroll_point = compare_method( scroll_point, elements.eq(0).offset().top ); } else { elements.eq(0).parents( 'dd' ).find( 'span.error_blank' ).text( '' ); } } }); } if ( $( 'input#mail_address_confirm' ).length && $( 'input#mail_address' ).length ) { var element = $( 'input#mail_address_confirm' ); var element_2 = $( 'input#mail_address' ); var dt_name = slice_method( element ); if ( element.val() != '' && element.val() !== element_2.val() ) { element.parents( 'dd' ).find( 'span.error_match' ).text( 'メールアドレスが一致しません。' ); error++; scroll_point = compare_method( scroll_point, element.offset().top ); } else { element.parents( 'dd' ).find( 'span.error_match' ).text( '' ); } } if ( /* $( 'input#mail_address_confirm_2' ).length && */ $( 'input#mail_address_2' ).length ) { var element = $( 'input#mail_address_confirm_2' ); var element_2 = $( 'input#mail_address_2' ); var dt_name = slice_method( element ); if ( /* element.val() != '' && */ element.val() !== element_2.val() ) { element.parents( 'dd' ).find( 'span.error_match' ).text( 'メールアドレスが一致しません。' ); error++; scroll_point = compare_method( scroll_point, element.offset().top ); } else { element.parents( 'dd' ).find( 'span.error_match' ).text( '' ); } } if ( $( 'input#password_confirm' ).length && $( 'input#password' ).length ) { var element = $( 'input#password_confirm' ); var element_2 = $( 'input#password' ); var dt_name = slice_method( element ); if ( element.val() != '' && element.val() !== element_2.val() ) { element.parents( 'dd' ).find( 'span.error_match' ).text( 'パスワードが一致しません。' ); error++; scroll_point = compare_method( scroll_point, element.offset().top ); } else { element.parents( 'dd' ).find( 'span.error_match' ).text( '' ); } } if ( error == 0 && isSend == true ) { if ( confirm_window == 1 ) { if ( window.confirm( '送信してもよろしいですか?' ) ) { send_setup(); order_set(); send_method(); } } if ( confirm_window == 2 ) { hidden_append( 'confirm_action', 'on' ); send_setup(); order_set(); var form_data = new FormData( $( 'form#mail_form' ).get(0) ); $.ajax({ type: $( 'form#mail_form' ).attr( 'method' ), url: $( 'form#mail_form' ).attr( 'action' ), cache: false, dataType: 'html', data: form_data, contentType: false, processData: false, success: function( res ) { // var response = res.split( ',' ); // 入力に「,」があった場合の対策 var i = res.indexOf(','); var response = [res.slice(0, i), res.slice(i + 1)]; if ( response[0] == 'confirm_success' ) { $( 'input#confirm_action' ).remove(); $( 'form#mail_form' ).css( 'display', 'none' ); $( '.step' ).attr( 'src', 'img/img_step2.png' ); $( '.step_sp' ).attr( 'src', 'img/img_step2_sp.png' ); $( 'div#confirm_field dl' ).append( response[1] ); $( 'div#confirm_field' ).fadeIn( 'slow' ); $( 'html, body' ).animate({ scrollTop: $( 'div#confirm_field' ).offset().top - 80 }, 500 ); } else { response[0] = response[0].replace( /
|
/gi, "\\n" ); window.alert( response[0] ); response[1] = response[1].replace( /
|
/gi, "\\n" ); window.alert( response[1] ); } }, error : function( res ) { window.alert( '通信に失敗しました。ページの再読み込みをしてからもう一度お試しください。' ); } }); } } else { if ( isSend == true ) { $( 'html, body' ).animate({ scrollTop: scroll_point - 70 }, 500 ); } } } // function send_setup function send_setup() { hidden_append( 'javascript_action', true ); var now_url = encodeURI( document.URL ); hidden_append( 'now_url', now_url ); var before_url = encodeURI( document.referrer ); hidden_append( 'before_url', before_url ); hidden_append( 'writing_time', writing_time ); } // function order_set function order_set() { var order_number = 0; for ( var i = 0; i < mailform_dt.length; i++ ) { if ( mailform_dt.eq(i).next( 'dd' ).find( 'input' ).length ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'input' ); var dt_name = slice_method( elements.eq(0) ); if ( elements.eq(0).attr( 'type' ) == 'radio' || elements.eq(0).attr( 'type' ) == 'checkbox' ) { var list_error = 0; for ( var j = 0; j < elements.length; j++ ) { if ( elements.eq(j).is( ':checked' ) == '' ) { list_error++; } } if ( list_error != elements.length ) { var attr_name = elements.eq(0).attr( 'name' ).replace( /\[|\]/g, '' ); var attr_type = elements.eq(0).attr( 'type' ); order_number++; hidden_append( 'order_' + order_number, attr_type + ',' + attr_name + ',false,' + dt_name ); } } else { for ( var j = 0; j < elements.length; j++ ) { //空白でも項目表示に変更 //if ( elements.eq(j).val() != '' ) { if ( 1 ) { var attr_name = elements.eq(j).attr( 'name' ); var attr_type = elements.eq(j).attr( 'type' ); var attr_span = elements.eq(j).prev( 'span' ).text();// 2022年1月5日追加 if ( elements.eq(j).hasClass( 'connect' )) { var connect = 'true'; }else if ( j == 0) { var connect = 'false'; } else { var connect = 'true'; } order_number++; hidden_append( 'order_' + order_number, attr_type + ',' + attr_name + ',' + connect + ',' + dt_name + ',' + attr_span ); } } } } if ( mailform_dt.eq(i).next( 'dd' ).find( 'select' ).length ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'select' ); var dt_name = slice_method( elements.eq(0) ); for ( var j = 0; j < elements.length; j++ ) { //if ( elements.eq(j).val() != '' ) { if ( 1 ) { var attr_name = elements.eq(j).attr( 'name' ); var attr_type = 'select'; var attr_span = elements.eq(j).prev( 'span' ).text();// 2022年1月5日追加 if ( elements.eq(j).hasClass( 'connect' )) { var connect = 'true'; }else if ( j == 0) { var connect = 'false'; } else { var connect = 'true'; } order_number++; hidden_append( 'order_' + order_number, attr_type + ',' + attr_name + ',' + connect + ',' + dt_name + ',' + attr_span ); } } } if ( mailform_dt.eq(i).next( 'dd' ).find( 'textarea' ).length ) { var elements = mailform_dt.eq(i).next( 'dd' ).find( 'textarea' ); var dt_name = slice_method( elements.eq(0) ); //if ( elements.eq(0).val() != '' ) { if ( 1 ) { var attr_name = elements.eq(0).attr( 'name' ); var attr_type = 'textarea'; order_number++; hidden_append( 'order_' + order_number, attr_type + ',' + attr_name + ',false,' + dt_name ); } } } hidden_append( 'order_count', order_number ); } function cancel_click() { $( 'input#form_submit_button' ).nextAll( 'input' ).remove(); $( 'div#confirm_field' ).css( 'display', 'none' ); $( 'div#confirm_field dl' ).html( '' ); $( '.step' ).attr( 'src', 'img/img_step1.png' ); $( '.step_sp' ).attr( 'src', 'img/img_step1_sp.png' ); $( 'form#mail_form' ).fadeIn( 'slow' ); $( 'html, body' ).animate({ scrollTop: $( 'form#mail_form' ).offset().top - 70 }, 500); } // function send_method function send_method() { stop_time = new Date(); writing_time += Math.round( ( stop_time - start_time ) / 1000 ); $( '
' ) .addClass( 'loading-layer' ) .appendTo( 'body' ) .css({ 'width': $( window ).width() + 'px', 'height': $( window ).height() + 'px', 'background': 'rgba( 0, 0, 0, 0.7 )', 'position': 'fixed', 'left': '0', 'top': '0', 'z-index': '999', }) .append( '' ); setTimeout(function(){ var form_data = new FormData( $( 'form#mail_form' ).get(0) ); $.ajax({ type: $( 'form#mail_form' ).attr( 'method' ), url: $( 'form#mail_form' ).attr( 'action' ), cache: false, dataType: 'html', data: form_data, contentType: false, processData: false, success: function( res ) { $( 'div.loading-layer, span.loading' ).remove(); var response = res.split( ',' ); if ( response[0] == 'send_success' ) { //response[1] = response[1].replace( /
|
/gi, "\n" ); //window.alert( response[1] ); window.location.href = response[1]; } else { response[1] = response[1].replace( /
|
/gi, "\n" ); window.alert( response[1] ); } }, error : function( res ) { $( 'div.loading-layer, span.loading' ).remove(); window.alert( '通信に失敗しました。ページの再読み込みをしてからもう一度お試しください。' ); } }); }, 1000); } // page setting for ( var i = 0; i < mailform_dt.length; i++ ) { if ( mailform_dt.eq(i).next( 'dd' ).hasClass('required') ) { $( '' ) .text( '必須' ) .addClass( 'required' ) .prependTo( $( mailform_dt.eq(i) ) ); } else { /*$( '' ) .text( '任意' ) .addClass( 'optional' ) .prependTo( $( mailform_dt.eq(i) ) );*/ } $( '' ) .addClass( 'error_blank' ) .appendTo( mailform_dt.eq(i).next( 'dd' ) ); if ( mailform_dt.eq(i).next( 'dd' ).find( 'input' ).length && mailform_dt.eq(i).next( 'dd' ).find( 'input' ).eq(0).attr( 'type' ) == 'email' ) { $( '' ) .addClass( 'error_format' ) .appendTo( mailform_dt.eq(i).next( 'dd' ) ); } } if ( $( 'input#mail_address_confirm' ).length ) { $( '' ) .addClass( 'error_match' ) .appendTo( $( 'input#mail_address_confirm' ).parents( 'dd' ) ); } if ( $( 'input#mail_address_confirm_2' ).length ) { $( '' ) .addClass( 'error_match' ) .appendTo( $( 'input#mail_address_confirm_2' ).parents( 'dd' ) ); } if ( $( 'input#password_confirm' ).length ) { $( '' ) .addClass( 'error_match' ) .appendTo( $( 'input#password_confirm' ).parents( 'dd' ) ); } $( 'input' ).on( 'keydown', function( e ) { if ( ( e.which && e.which === 13 ) || ( e.keyCode && e.keyCode === 13 ) ) { return false; } else { return true; } }); $( window ).on( 'resize', resize ); // if ( $( 'textarea' ).length ) { // $( 'textarea' ) // .focus(function() { // start_time = new Date(); // }) // .blur(function() { // stop_time = new Date(); // writing_time += Math.round( ( stop_time - start_time ) / 1000 ); // }); // } $.ajax({ type: $( 'form#mail_form' ).attr( 'method' ), url: $( 'form#mail_form' ).attr( 'action' ), cache: false, dataType: 'text', data: 'config_get=true', success: function( res ) { switch ( res ) { case '2': confirm_window = 2; break; case '1': confirm_window = 1; break; default: window.alert( '設定ファイルの読み込みに失敗しました。' ); break; } }, error : function( res ) { window.alert( '設定ファイルの読み込みに失敗しました。\\nページの再読み込みをしてからもう一度お試しください。' ); } }); $('input#form_submit_button').click(function(e) { e.preventDefault(); required_check(true); $("input").change(function(e) { e.preventDefault(); required_check(false); }); }); /* $( 'input#form_submit_button' ).click( required_check ); */ $( 'input#confirm_cancel_button' ).click( cancel_click ); $( 'input#confirm_submit_button' ).click( send_method ); })( jQuery );