// 기본변수 var mailFormat = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,50}))$/; var passFormat = /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[0-9])[0-9a-zA-Z]{8,}$/; var nameFormat = /^[\w\Wㄱ-ㅎㅏ-ㅣ가-힣.\(\)\-_]{2,20}$/; var nickFormat = /^[\w\Wㄱ-ㅎㅏ-ㅣ가-힣]{2,20}$/; // 모달 호출 function callModal(mode, showModal, modalName){ var scrollPosition = [ self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop ]; var html = jQuery('html'); if(mode == 'block'){ jQuery('
').css('opacity',0.7).appendTo('body').height(jQuery('#wrapper').height()); jQuery(window).resize(function(){jQuery('#blind_box').height(jQuery('#wrapper').height())}); if(!showModal) { jQuery('.loader').css("position","fixed"); jQuery('.loader').css("z-index","200000"); jQuery('.loader').css("top",(jQuery( window ).height()-jQuery('#main-header').height())/2+"px"); jQuery('.loader').css("left","50%"); jQuery(".loader").show(); } else if(modalName){ var getLeft = 50-(parseInt(jQuery('#'+modalName).width()/jQuery( window ).width())*50); var getTop = 20-(parseInt(jQuery('#'+modalName).height()/(jQuery( window ).height()-jQuery('#main-header').height()))*50); jQuery('#'+modalName).fadeIn(300); jQuery('#'+modalName).css("position","fixed"); jQuery('#'+modalName).css('z-index', '200000'); jQuery('#'+modalName).css("top",getTop+"%"); //(jQuery( window ).height()-jQuery('#main-header').height())/2+"px" jQuery('#'+modalName).css("left",getLeft+"%"); } html.data('scroll-position', scrollPosition); html.data('previous-overflow', html.css('overflow')); html.css('overflow', 'hidden'); window.scrollTo(scrollPosition[0], scrollPosition[1]); } else { var html = jQuery('html'); var scrollPosition = html.data('scroll-position'); html.css('overflow', html.data('previous-overflow')); window.scrollTo(scrollPosition[0], scrollPosition[1]) jQuery("#loader").hide(); jQuery(".maskLayer").hide(); } } // 길이확인 function lengthCheck(el){ var codeByte = 0; for (var idx = 0; idx < el.length; idx++) { var oneChar = escape(el.charAt(idx)); if ( oneChar.length == 1 ) codeByte ++; else if (oneChar.indexOf("%u") != -1) codeByte += 2; else if (oneChar.indexOf("%") != -1) codeByte ++; } return codeByte; } // 여백제거 function allTrim(string){return string.replace(/ /g,"");}jQuery(document).ready(function($) { // R : 등록, E : 회원정보 수정 var formMode = "R"; // 기본적으로 보이지 말아야할 Layer 를 숨긴다. $(".leon-label").hide(); $(".guide-txt").hide(); // 경우에 따른 초기 값 설정 if($("#formMode").val() == "") { $("#term1-label").click( function() {setCheckBox("term1" , "click", "checkbox");}); // 소셜모드에서 사용하지 않는 요소 if($("#socialMode").val() != "social"){ $("#user-email").on('blur keyup focus', function (e) {mailCheck("no-return");}); $("#password").on( 'blur keyup focus', function (e) {passwordCheck("no-return");}); $("#confirm-password").on( 'blur keyup focus', function (e) {passwordConfirmCheck("no-return");}); $("#user-email").focus(); } else $("#nickname").focus(); } else { formMode = "E"; // 가입 간략화, 이름은 수정모드일 때만 보인다 $("#first-name").on('blur focus', function (e) {nameCheck("no-return");}); if($("#user-email").val() != "") $("#user-email-label").show(); if($("#first-name").val() != "") $("#first-name-label").show(); if($("#nickname").val() != "") $("#nickname-label").show(); $("#first-name").focus(); } // 기본항목 $("#nickname").on('blur focus', function (e) {nickCheck("no-return");}); $("#term1").click( function () {if($(this).is(":checked")) $("#"+"caution-term1").hide();}); $("#getemail-label").click( function() {setCheckBox("getemail", "click", "checkbox");}); $("#getpush-label").click( function() {setCheckBox("getpush" , "click", "checkbox");}); $("#gender-male-label").click(function() {setCheckBox("gender-male", "click", "radio");}); $("#gender-female-label").click(function(){setCheckBox("gender-female","click", "radio");}); // 이름 검증 function nameCheck(mode){ $("#first-name-guide").hide(); $("#first-name").removeClass("focuson"); $("#first-name").val(allTrim($("#first-name").val())); var result = false, vals = $("#first-name").val(), msg = "", f = $("#first-name").is(":focus");; if(f && vals == "") $("#first-name-guide").show(); else if(vals == "") msg = '빠트린 부분이 있네요. 이름을 입력해 주세요.'; else if(lengthCheck(vals) < 2 || lengthCheck(vals) > 20) msg = '이름은 2자이상 20자 이내로 입력해 주세요.'; else if(!nameFormat.test(vals)) msg = '사용할 수 없는 문자가 포함되어 있습니다.'; else { result = true; msg = '멋진 이름입니다.'; } fieldSetup('first-name', (result)?'approve':'caution', msg); if(f && vals == "") $("#first-name").addClass("focuson"); if(mode == "return") return result; } function passwordConfirmCheck(mode){ $("#confirm-password-guide").hide(); $("#confirm-password").removeClass("focuson"); var result = false, vals = $("#confirm-password").val(), vals2 = $("#password").val(), msg="", f = $("#confirm-password").is(":focus"); if(f && vals == "") $("#confirm-password-guide").show(); else if(vals == "") msg = '비밀번호를 다시 한번 입력해 주세요.'; else if(vals != vals2) msg = '비밀번호가 일치하지 않습니다. 정확하게 입력해 주세요.'; else { msg = "비밀번호와 일치합니다"; result = true; } fieldSetup('confirm-password', (result)?'approve':'caution', msg); if(f && vals == "") $("#confirm-password").addClass("focuson"); if(mode == "return") return result; } // PASSWORD 검증 function passwordCheck(mode){ $("#password-guide").hide(); $("#password").removeClass("focuson"); $("#password").val(allTrim($("#password").val())); var result = false, vals = $("#password").val(), msg="", f = $("#password").is(":focus"); if(f && vals == "") $("#password-guide").show(); else if(vals == "") msg = '비밀번호를 입력해 주세요.'; else if(vals.length < 8) msg = '비밀번호는 여덟자 이상으로 입력해 주세요.'; else if(!passFormat.test(vals)) msg = '영문(대소문자 구분)과 숫자가 혼합된 단어를 입력해 주세요.'; else { msg = "사용하셔도 좋은 비밀번호입니다."; result = true; } fieldSetup('password', (result)?'approve':'caution', msg); if(f && vals == "") $("#password").addClass("focuson"); if(mode == "return") return result; } // EMAIL 검증 function mailCheck(mode){ $("#user-email-guide").hide(); $("#user-email").removeClass("focuson"); $("#user-email").val(allTrim($("#user-email").val())); var result = false, vals = $("#user-email").val(), msg = "", f = $("#user-email").is(":focus"); if(f && vals == "") $("#user-email-guide").show(); else if(vals == "") msg = '이메일 주소를 입력해 주세요.'; else if(!mailFormat.test(vals)) msg = '올바른 형식의 이메일 주소를 입력해 주세요.'; else if(lengthCheck(vals) > 50) msg = '이메일 주소는 50자 이내로 입력해 주세요.'; else { var getCnt = checkData("user-email", vals); if(getCnt > 0) msg = '이미 가입된 이메일 주소입니다.'; else { result = true; msg = '사용 가능한 이메일 주소입니다.'; } } fieldSetup('user-email', (result)?'approve':'caution', msg); if(f && vals == "") $("#user-email").addClass("focuson"); if(mode == "return") return result; } // 닉네임 검증 function nickCheck(mode){ $("#nickname-guide").hide(); $("#nickname").removeClass("focuson"); $("#nickname").val(allTrim($("#nickname").val())); var result = false, vals = $("#nickname").val(), msg="", f = $("#nickname").is(":focus"); if(f && vals == "") $("#nickname-guide").show(); else if(vals == "") msg = '빠트린 부분이 있네요. 닉네임을 입력해 주세요.'; else if(lengthCheck(vals) < 4 || lengthCheck(vals) > 20) msg = '닉네임은 4자 이상 20자 이내로 입력해 주세요.'; else if(!nickFormat.test(vals)) msg = '사용할 수 없는 문자가 포함되어 있습니다.'; else { var getCnt = checkData("nickname", vals); if(getCnt > 0) msg = '이미 사용중인 닉네임 입니다.'; else { result = true; msg = '사용하셔도 좋은 닉네임 입니다.'; } } fieldSetup('nickname', (result)?'approve':'caution', msg) if(f && vals == "") $("#nickname").addClass("focuson"); if(mode == "return") return result; } // CHECKBOX 초기화 function setCheckBox(id, mode, t){ var labelId = id+'-label', setCheck; if(mode == 'loading') setCheck = ($("#"+id).is(":checked"))?true:false; else setCheck = ($("#"+id).is(":checked"))?false:true; if(t == "checkbox") $("#"+labelId).css("background", "url(/common/img/icon_checkbox"+((setCheck)?"_on":"")+".png) no-repeat 95%"); else { var diffId = (id == "gender-male")?"gender-female":"gender-male", diffId = diffId+"-label"; $("#"+labelId).css("background", "url(/common/img/icon_radio"+((setCheck)?"_on":"")+".png) no-repeat 0 0"); $("#"+diffId).css("background", "url(/common/img/icon_radio"+((!setCheck)?"_on":"")+".png) no-repeat 0 0"); } } setCheckBox("getemail", "loading", "checkbox"); setCheckBox("getpush" , "loading", "checkbox"); setCheckBox("term1" , "loading", "checkbox"); setCheckBox("gender-male" , "loading", "radio"); setCheckBox("gender-male" , "loading", "radio"); // 출력 화면 초기화 function fieldSetup(id, status, txt){ var labelId = id+"-label", cautionId = "caution-"+id, approveId = "approve-"+id; $("#"+labelId).hide(); if(txt == ""){ $("#"+id).attr('class', ''); $("#"+labelId).attr('class', 'form-txt'); $("#"+labelId).hide(); $("#"+cautionId).hide(); $("#"+approveId).hide(); } else { var hideId = (status == 'caution')?approveId:cautionId, showId = (status == 'caution')?cautionId:approveId; $("#"+hideId).hide(); $("#"+showId).show(); $("#"+cautionId).html(txt); if(txt == "") $("#"+cautionId).hide(); if($("#"+id).val() != ""){ $("#"+labelId).show(); $("#"+labelId).attr('class', 'form-txt '); // +status } $("#"+id).attr('class', status); console.log("MSG [fieldSetup] : "+txt); } } // AJAX 값 검증 function checkData(fieldID,userValue){ var rtnData; $.ajax({type: "post",dataType: "json", async: false, url: "/searchMeta",data: {"fieldID":fieldID,"userValue":userValue, "formMode":formMode}, success: function (data) { rtnData = parseInt(data.result); console.log("fieldID :"+fieldID+", userValue :"+userValue+", formMode :"+formMode+", RTN : "+data.result); if(!(rtnData == 0 || rtnData == 1)){ rtnData = 1; //alert("처리할 수 없는 값이 회신되었습니다. 이 문제가 반복될 경우 관리자에게 문의하세요"); } }, error: function (request, status, error) { console.log("code: "+request.status+"\n"+"message: "+request.responseText+"\n"+"error: "+error); alert("시스템의 오류로 처리할 수 없습니다. 다시 시도해 보시기 바랍니다"); //location.href="/"; } }); return rtnData; } // REQUST $("#requestSubmit").click(function () { $("#error").hide(); var confirmField = false; if($("#socialMode").val() != "social" && formMode != "E"){ if(!mailCheck("return")) $("#user-email").focus(); else if(!passwordCheck("return")) $("#password").focus(); else if(!passwordConfirmCheck("return"))$("#confirm-password").focus(); else confirmField = true; } else confirmField = true; if(confirmField && formMode == "E"){ if(!nameCheck("return")) { $("#first-name").focus(); confirmField = false; } } if(confirmField){ if(!nickCheck("return")) { confirmField = false; $("#nickname").focus(); } if(confirmField && formMode != "E"){ if(!$("#term1").is(":checked")){ fieldSetup('term1','caution', '약관 내용을 확인 후 동의해 주세요.'); console.log("ERR : 약관"); $("#term1").focus(); confirmField = false; } else { fieldSetup('term1','approve',''); confirmField = true; } } if(confirmField) { if(formMode == "E") { callModal("block",false,""); $.ajax({ type : "post", dataType: "json", async : false, url : "/leonProcessor", data : { "m" : "updateprofile", "nickname" : $("#nickname").val(), "first_name": $("#first-name").val(), "birthYear" : $("#birthYear").val(), "birthMonth": $("#birthMonth").val(), "birthDay" : $("#birthDay").val(), "gender" : $(':radio[name="gender"]:checked').val(), "getpush" : ($("#getpush").is(":checked"))?"1":"", "getemail" : ($("#getemail").is(":checked"))?"1":"" }, success: function (data) { console.log($(':radio[name="gender"]:checked').val()); console.log("RESULT : "+data.result+", CODE : "+data.code+", MSG : "+data.message); callModal("unblock",false,""); switch(data.result){ case "600" : if(data.field != 'birthYear') fieldSetup(data.field, 'caution', data.message) $("#"+data.field).focus(); break; case "200" : callModal("block",true,"pop_message"); break; } }, error: function (request, status, error) { console.log("code: "+request.status+"\n"+"message: "+request.responseText+"\n"+"error: "+error); alert("시스템의 오류로 처리할 수 없습니다. 다시 시도해 보시기 바랍니다"); callModal("unblock",false,""); } }); } else { callModal("block",false,""); $("#signupForm").submit(); } } } }); });