회원정보수정 이메일 인증 추가(1)

This commit is contained in:
김현욱
2025-12-26 18:29:18 +09:00
parent c9dbc1f0f5
commit 5bceea8e2a
3 changed files with 751 additions and 157 deletions

View File

@@ -12,11 +12,11 @@ public class MyMbrEmailChngVO extends AbstractVO {
private static final long serialVersionUID = 1L;
/*id*/
@NotBlank(message = "아이디")
// @NotBlank(message = "아이디")
private String id;
/*도메인*/
@NotBlank(message = "도메인")
// @NotBlank(message = "도메인")
private String domain;
/*이메일주소*/

View File

@@ -37,7 +37,8 @@
<script>
$(document).ready(function() {
fn_show_editContent();
fn_show_phoneAuth();
fn_show_emailAuth();
// fn_show_phoneAuth();
first = 0;
$(".signUp__inputBox__alertText").hide();
@@ -45,16 +46,17 @@
fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw');
fn_alert_hide($("#newPassword"), $("#newPasswordAlert"), 'pw');
fn_alert_hide($("#checkPassword"), $("#checkPasswordAlert"), 'pw');
fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert"));
// fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert"));
fn_alert_hide($("#email"), $("#emailAlert"));
fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert"));
fn_alert_hide($("#id"), $("#emailAlert"));
// fn_alert_hide($("#id"), $("#emailAlert"));
fn_alert_hide($("#dtlAdres"), $("#postcodeAlert"));
// fn_alert_hide_selected();
//휴대폰번호 포매팅
if($("#lagacyMbtlnb").text() !== ''){
fn_set_lagacyMbtlnb($("#lagacyMbtlnb").text());
}
// if($("#lagacyMbtlnb").text() !== ''){
// fn_set_lagacyMbtlnb($("#lagacyMbtlnb").text());
// }
});
/* ********************************************************
@@ -108,6 +110,84 @@
}
}
/* ********************************************************
* 기존 가입 여부 조회(이메일)
******************************************************** */
const fn_check_mbrwithdrawal_email = function() {
let mbrNm = $('#mbrNm').val();
// let mbtlnb = $('#lagacyEmail').text().trim().replace(/-/g, '')
let email = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': email
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectMbrwithdrawalSearchEmail"/>',
data : params,
success : function(result) {
let mbrWithDrawalList = JSON.parse(result.resBody.result).mbrWithDrawalList;
fn_make_rejoinInforList_email(mbrWithDrawalList);
}
});
}
/* ********************************************************
* 기존 가입 내역(이메일)
******************************************************** */
const fn_make_rejoinInforList_email = function(_data) {
let tbodyClone;
let isExtMember = false;
let isDupEmail = false;
if (_data.length > 0) {
$('#rejoinContainer').show();
for (let i = 0; i < _data.length; i++) {
if (_data[i].mbrId.startsWith('M-')) {
isExtMember = true;
tbodyClone +='<tr>';
tbodyClone +=' <td style="display : none;">' + _data[i].mbrInnb + '</td>';
tbodyClone +=' <td>' + _data[i].brand + '</td>';
tbodyClone +=' <td>' + _data[i].extrlIntrlckDv + '</td>';
tbodyClone +=' <td>' + _data[i].emailAdres + '</td>';
tbodyClone +='</tr>';
} else {
$('#rejoinContainer').hide();
isExtMember = false;
isDupEmail = true;
break;
}
}
tbodyClone +='<tr style="display:none;"><td><input type="text" name="extMember" value="'+_data[0].mbrInnb+'"/></td></tr>';
if (isExtMember) {
alert('계정정보 연동을 진행합니다.');
}
$('#rejoinSelect').html(tbodyClone);
}
if (isDupEmail) {
alert('이미 가입된 이메일 정보가 있습니다. \n 다른 이메일을 입력해 주세요.');
} else {
$('#emailAuthContent').show();
$('#mbtlCert').focus();
fn_email_sending_number();
}
}
/* ********************************************************
* 기존 가입 여부 조회
******************************************************** */
@@ -293,7 +373,8 @@
seconds--;
} else {
fn_stop_timer();
fn_stop_email_timer();
// fn_stop_timer();
alert('인증번호 유효시간이 만료되었습니다.');
}
}
@@ -357,6 +438,65 @@
timerRunning = true;
}
/* ********************************************************
* 이메일 인증 번호 발송
******************************************************** */
first = 0;
mbtlCert = '';
const fn_email_sending_number = function() {
if(timerRunning){
return;
}
if(mbtlCert === $('#email').val()){
first++;
}else{
first = 0;
}
mbtlCert = $('#email').val();
let mbrNm = $('#mbrNm').val();
let email = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': email
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/insertEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
if (first > 0) {
alert('인증번호가 재발송되었습니다.');
} else if (first === 0) {
alert('인증번호가 발송되었습니다.');
first++;
} else {
return;
}
$('#sndngInnb').val(result.sndngInnb);
}else {
alert('인증번호 발송에 실패했습니다.');
fn_stop_email_timer();
return;
}
}
});
$('#email').attr("readonly", true);
clearInterval(countdown);
seconds = 300;
fn_set_timeOut();
countdown = setInterval(fn_set_timeOut, 1000);
timerRunning = true;
}
/* ********************************************************
* 타이머 정지 함수
******************************************************** */
@@ -371,6 +511,20 @@
}
}
/* ********************************************************
* 타이머 정지 함수(이메일)
******************************************************** */
const fn_stop_email_timer = function() {
if (timerRunning) {
clearInterval(countdown);
$('#timer').text('05:00');
$('#mbtlCert').val('');
$('#emailAuthContent').hide();
$('#email').attr("readonly", false);
timerRunning = false;
}
}
/* ********************************************************
* 휴대폰 인증 확인
******************************************************** */
@@ -458,63 +612,155 @@
}
};
/**********************************************
* 이메일 형식 유효성 체크 (올바른 이메일 형식일 때 True)
***********************************************/
const fn_check_email = function(email) {
/* ********************************************************
* 이메일 인증 확인
******************************************************** */
isChkd_own_email = false;
const fn_confim_own_email = function() {
var regular = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
if (first <= 0) return;
let sndngInnb = $('#sndngInnb').val();
let email = $('#email').val().trim().replace(/-/g, '');
let crtnb = $('#mbtlCert').val();
fn_stop_email_timer();
let params = {
'sndngInnb': sndngInnb,
'email': email,
'crtnb' : crtnb
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
$('#emailAuthOkBtn').show();
$('#emailAuthBtn').hide();
isChkd_own_email = true;
fn_change_email();
$('#email').attr("readonly", true);
}else {
alert('인증번호가 일치하지 않습니다.');
return;
}
}
});
if(regular.test(email)){
return true;
}else{
return false;
}
}
/* ********************************************************
* email 합치기
* 이메일 인증 버튼 클릭시, 이메일 인증 박스 노출
******************************************************** */
const fn_make_email = function() {
const fn_show_emailAuth = function() {
let emailAuthBtn = $('#emailAuthBtn');
let emailAuthContent = $('#emailAuthContent');
let domain = $('#domain').val();
let id = $('#id').val().trim();
$('[name=email]').val(id + '@' + domain);
emailAuthContent.hide();
return $('[name=email]').val();
emailAuthBtn.click(function () {
if(!$('#email').val()){
alert('이메일 주소를 입력해 주세요.');
$('#email').focus();
return;
}
// 기존 가입 여부 확인
fn_check_mbrwithdrawal_email();
// $('#emailAuthContent').show();
// $('#mbtlCert').focus();
// fn_email_sending_number();
});
}
/* ********************************************************
* 회원 정보 수정(이메일 변경)
******************************************************** */
const fn_change_email = function() {
let email = fn_make_email();
if(!fn_check_email(email)) {
alert('올바른 이메일 형식이 아닙니다.');
$('#id').focus();
return;
}
if (confirm('이메일을 <spring:message code="confirm.common.update"/>')) {
if (confirm('이메일 주소를 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type: "post",
url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>',
data: {
id : $("#id").val().trim(),
domain: $("#domain").val().trim(),
email : email
email : $("#email").val()
},
success: function (data) {
let newEmail = JSON.parse(data.resBody.result);
newEmail = newEmail.paramVO.email;
$("#lagacyEmail").text(newEmail);
$("#inputEmail").val(newEmail);
alert('<spring:message code="success.common.update"/>');
$("#emailChngBtn").click();
}
});
}
}
};
/**********************************************
* 이메일 형식 유효성 체크 (올바른 이메일 형식일 때 True)
***********************************************/
// const fn_check_email = function(email) {
//
// var regular = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
//
// if(regular.test(email)){
// return true;
// }else{
// return false;
// }
// }
/* ********************************************************
* email 합치기
******************************************************** */
// const fn_make_email = function() {
//
// let domain = $('#domain').val();
// let id = $('#id').val().trim();
// $('[name=email]').val(id + '@' + domain);
//
// return $('[name=email]').val();
// }
/* ********************************************************
* 회원 정보 수정(이메일 변경)
******************************************************** */
<%--const fn_change_email = function() {--%>
<%-- let email = fn_make_email();--%>
<%-- if(!fn_check_email(email)) {--%>
<%-- alert('올바른 이메일 형식이 아닙니다.');--%>
<%-- $('#id').focus();--%>
<%-- return;--%>
<%-- }--%>
<%-- if (confirm('이메일을 <spring:message code="confirm.common.update"/>')) {--%>
<%-- $.ajax({--%>
<%-- type: "post",--%>
<%-- url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>',--%>
<%-- data: {--%>
<%-- id : $("#id").val().trim(),--%>
<%-- domain: $("#domain").val().trim(),--%>
<%-- email : email--%>
<%-- },--%>
<%-- success: function (data) {--%>
<%-- let newEmail = JSON.parse(data.resBody.result);--%>
<%-- newEmail = newEmail.paramVO.email;--%>
<%-- $("#lagacyEmail").text(newEmail);--%>
<%-- alert('<spring:message code="success.common.update"/>');--%>
<%-- $("#emailChngBtn").click();--%>
<%-- }--%>
<%-- });--%>
<%-- }--%>
<%--}--%>
/* ********************************************************
* 우편번호 찾기
@@ -658,20 +904,30 @@
//초기화
first = 0;
fn_stop_timer();
fn_stop_email_timer();
// fn_stop_timer();
$('.update-text').val('');
$('.editAccount__editContent .signUp__inputBox__alertText').hide();
$('select[name="domain"]').val('직접입력').niceSelect('update');
fn_set_domain('직접입력');
// $('select[name="domain"]').val('직접입력').niceSelect('update');
// fn_set_domain('직접입력');
if(isChkd_own){
if(isChkd_own_email){
$('.update-text').attr("readonly", false);
$('#phoneAuthBtn').show();
$('#phoneAuthOkBtn').hide();
$('#emailAuthBtn').show();
$('#emailAuthOkBtn').hide();
$('#resIdForm').hide();
$('#resPswdForm').hide();
isChkd_own = false;
isChkd_own_email = false;
}
// if(isChkd_own){
// $('.update-text').attr("readonly", false);
// $('#phoneAuthBtn').show();
// $('#phoneAuthOkBtn').hide();
// $('#resIdForm').hide();
// $('#resPswdForm').hide();
// isChkd_own = false;
// }
}
/* ********************************************************
@@ -875,31 +1131,63 @@
</c:choose>
</td>
</tr>
<%-- <tr>--%>
<%-- <th>--%>
<%-- <span class="editAccount__title">휴대폰번호</span>--%>
<%-- </th>--%>
<%-- <td>--%>
<%-- <span class="editAccount__text" id="lagacyMbtlnb"><c:out value="${ resultMap.result.mbtlnb}"/></span>--%>
<%-- <button type="button" class="btn md gray2 editAccount__editBtn" id="mbtlnbChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>--%>
<%-- <div class="editAccount__editContent" id="phoneInputContent">--%>
<%-- <div class="inputWithBtn">--%>
<%-- <input type="text" class="input-text full number update-text" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13">--%>
<%-- <input type="hidden" name="mbtlnb" value="<c:out value="${resultMap.result.mbtlnb}"/>" id="inputMbtlnb">--%>
<%-- <button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button>--%>
<%-- <!-- 인증완료시 버튼 -->--%>
<%-- <button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>--%>
<%-- </div>--%>
<%-- <p class="signUp__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p>--%>
<%-- <div class="phoneAuth" id="phoneAuthContent">--%>
<%-- <input type="hidden" id="sndngInnb">--%>
<%-- <div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <div class="inputTimer">--%>
<%-- <input type="text" class="input-text full number update-text" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">--%>
<%-- <span class="inputTimer__time" id="timer">03:00</span>--%>
<%-- </div>--%>
<%-- <button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button>--%>
<%-- </div>--%>
<%-- <p class="signUp__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </td>--%>
<%-- </tr>--%>
<tr>
<th>
<span class="editAccount__title">휴대폰번호</span>
<span class="editAccount__title">이메일</span>
</th>
<td>
<span class="editAccount__text" id="lagacyMbtlnb"><c:out value="${ resultMap.result.mbtlnb}"/></span>
<button type="button" class="btn md gray2 editAccount__editBtn" id="mbtlnbChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>
<div class="editAccount__editContent" id="phoneInputContent">
<span class="editAccount__text" id="lagacyEmail"><c:out value="${ resultMap.result.email}"/></span>
<button type="button" class="btn md gray2 editAccount__editBtn" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>
<div class="editAccount__editContent" id="emailInputContent">
<div class="inputWithBtn">
<input type="text" class="input-text full number update-text" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13">
<input type="hidden" name="mbtlnb" value="<c:out value="${resultMap.result.mbtlnb}"/>" id="inputMbtlnb">
<button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button>
<input type="text" class="input-text full update-text" id="email" title="이메일" placeholder="이메일을 입력해 주세요" maxlength="190">
<input type="hidden" name="email" value="<c:out value="${resultMap.result.email}"/>" id="inputEmail">
<button type="button" class="btn md theme outline" id="emailAuthBtn"><spring:message code="button.certificationEmail"/></button>
<!-- 인증완료시 버튼 -->
<button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>
<button type="button" class="btn md outline" id="emailAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>
</div>
<p class="signUp__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p>
<div class="phoneAuth" id="phoneAuthContent">
<p class="signUp__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>
<div class="phoneAuth" id="emailAuthContent">
<input type="hidden" id="sndngInnb">
<div>
<div class="inputWithBtn">
<div class="inputTimer">
<input type="text" class="input-text full number update-text" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">
<span class="inputTimer__time" id="timer">03:00</span>
<span class="inputTimer__time" id="timer">05:00</span>
</div>
<button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button>
<button type="button" class="btn md gray" onclick="fn_confim_own_email();"><spring:message code="button.ok"/></button>
</div>
<p class="signUp__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>
</div>
@@ -907,36 +1195,36 @@
</div>
</td>
</tr>
<tr>
<th>
<span class="editAccount__title">이메일</span>
</th>
<td>
<span class="editAccount__text" id="lagacyEmail"><c:out value="${ resultMap.result.email }"/></span>
<button type="button" class="btn md gray2 editAccount__editBtn" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>
<div class="editAccount__editContent">
<div class="editAccount__innerBox">
<input type="hidden" name="email" value=""/>
<div class="inputEmail">
<input class="input-text full update-text" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="25">
<span class="inputEmail__at">@</span>
<input class="input-text full" type="text" id="domain" title="이메일 domain" maxlength="25">
<div class="select-box">
<select name="domain" title="이메일 자동발송 발신주소" onchange="fn_set_domain(this.value);">
<c:forEach var="email" items="${resultMap.email}" varStatus="status">
<option value="${email.cdNm}" ${f:setSelected(email.cd, '99')}><c:out value="${email.cdNm}"/></option>
</c:forEach>
</select>
</div>
</div>
<p class="signUp__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>
<div class="editAccount__innerBtnContainer">
<button type="button" class="btn outline full lg" onclick="fn_change_email();"><spring:message code="button.ok"/></button>
</div>
</div>
</div>
</td>
</tr>
<%-- <tr>--%>
<%-- <th>--%>
<%-- <span class="editAccount__title">이메일</span>--%>
<%-- </th>--%>
<%-- <td>--%>
<%-- <span class="editAccount__text" id="lagacyEmail"><c:out value="${ resultMap.result.email }"/></span>--%>
<%-- <button type="button" class="btn md gray2 editAccount__editBtn" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>--%>
<%-- <div class="editAccount__editContent">--%>
<%-- <div class="editAccount__innerBox">--%>
<%-- <input type="hidden" name="email" value=""/>--%>
<%-- <div class="inputEmail">--%>
<%-- <input class="input-text full update-text" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="25">--%>
<%-- <span class="inputEmail__at">@</span>--%>
<%-- <input class="input-text full" type="text" id="domain" title="이메일 domain" maxlength="25">--%>
<%-- <div class="select-box">--%>
<%-- <select name="domain" title="이메일 자동발송 발신주소" onchange="fn_set_domain(this.value);">--%>
<%-- <c:forEach var="email" items="${resultMap.email}" varStatus="status">--%>
<%-- <option value="${email.cdNm}" ${f:setSelected(email.cd, '99')}><c:out value="${email.cdNm}"/></option>--%>
<%-- </c:forEach>--%>
<%-- </select>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- <p class="signUp__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>--%>
<%-- <div class="editAccount__innerBtnContainer">--%>
<%-- <button type="button" class="btn outline full lg" onclick="fn_change_email();"><spring:message code="button.ok"/></button>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </td>--%>
<%-- </tr>--%>
<tr>
<th>
<span class="editAccount__title">생년월<span class="required-asterisk">*</span></span>

View File

@@ -35,7 +35,8 @@
<script>
$(document).ready(function() {
fn_show_editContent();
fn_show_phoneAuth();
fn_show_emailAuth();
// fn_show_phoneAuth();
first = 0;
$(".userForm__inputBox__alertText").hide();
@@ -43,9 +44,10 @@
fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw');
fn_alert_hide($("#newPassword"), $("#newPasswordAlert"), 'pw');
fn_alert_hide($("#checkPassword"), $("#checkPasswordAlert"), 'pw');
fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert"));
// fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert"));
fn_alert_hide($("#email"), $("#emailAlert"));
fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert"));
fn_alert_hide($("#id"), $("#emailAlert"));
// fn_alert_hide($("#id"), $("#emailAlert"));
fn_alert_hide($("#dtlAdres"), $("#postcodeAlert"));
// fn_alert_hide_selected();
@@ -53,9 +55,9 @@
e.preventDefault();
});
//휴대폰번호 포매팅
if($("#mbtlnb").val() !== ''){
fn_set_lagacyMbtlnb($("#mbtlnb").val());
}
// if($("#mbtlnb").val() !== ''){
// fn_set_lagacyMbtlnb($("#mbtlnb").val());
// }
/* ********************************************************
* 모달 배경화면 스크롤 방지
@@ -150,6 +152,81 @@
}
}
/* ********************************************************
* 기존 가입 여부 조회(이메일)
******************************************************** */
const fn_check_mbrwithdrawal_email = function() {
let mbrNm = $('#mbrNm').val();
let email = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': email
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectMbrwithdrawalSearchEmail"/>',
data : params,
success : function(result) {
let mbrWithDrawalList = JSON.parse(result.resBody.result).mbrWithDrawalList;
fn_make_rejoinInforList_email(mbrWithDrawalList);
}
});
}
/* ********************************************************
* 기존 가입 내역(이메일)
******************************************************** */
const fn_make_rejoinInforList_email = function(_data) {
let tbodyClone;
let isExtMember = false;
let isDupEmail = false;
if (_data.length > 0) {
$('#rejoinContainer').show();
for (let i = 0; i < _data.length; i++) {
if (_data[i].mbrId.startsWith('M-')) {
isExtMember = true;
tbodyClone +='<tr>';
tbodyClone +=' <td style="display : none;">' + _data[i].mbrInnb + '</td>';
tbodyClone +=' <td>' + _data[i].brand + '</td>';
tbodyClone +=' <td>' + _data[i].extrlIntrlckDv + '</td>';
tbodyClone +=' <td>' + _data[i].emailAdres + '</td>';
tbodyClone +='</tr>';
} else {
$('#rejoinContainer').hide();
isExtMember = false;
isDupEmail = true;
break;
}
}
tbodyClone +='<tr style="display:none;"><td><input type="text" name="extMember" value="'+_data[0].mbrInnb+'"/></td></tr>';
if (isExtMember) {
fn_alert_show('계정정보 연동을 진행합니다.');
}
$('#rejoinSelect').html(tbodyClone);
}
if (isDupEmail) {
alert('이미 가입된 이메일 정보가 있습니다. \n 다른 이메일을 입력해 주세요.');
} else {
$('#emailAuthContent').show();
$('#mbtlCert').focus();
fn_email_sending_number();
}
}
/* ********************************************************
* 기존 가입 여부 조회
******************************************************** */
@@ -335,7 +412,8 @@
seconds--;
} else {
fn_stop_timer();
fn_stop_email_timer();
// fn_stop_timer();
fn_alert_show('인증번호 유효시간이 만료되었습니다.');
}
}
@@ -400,6 +478,66 @@
timerRunning = true;
}
/* ********************************************************
* 이메일 인증 번호 발송
******************************************************** */
first = 0;
mbtlCert = '';
const fn_email_sending_number = function() {
if(timerRunning){
return;
}
fn_change_btn_text();
if(mbtlCert === $('#email').val()){
first++;
}else{
first = 0;
}
mbtlCert = $('#email').val();
let mbrNm = $('#mbrNm').val();
let email = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': email
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/insertEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
if (first > 0) {
fn_alert_show('인증번호가 재발송되었습니다.');
} else if (first === 0) {
fn_alert_show('인증번호가 발송되었습니다.');
first++;
} else {
return;
}
$('#sndngInnb').val(result.sndngInnb);
}else {
fn_alert_show('인증번호 발송에 실패했습니다.');
fn_stop_email_timer();
return;
}
}
});
$('#email').attr("readonly", true);
clearInterval(countdown);
seconds = 300;
fn_set_timeOut();
countdown = setInterval(fn_set_timeOut, 1000);
timerRunning = true;
}
/* ********************************************************
* 타이머 정지 함수
******************************************************** */
@@ -414,6 +552,20 @@
}
}
/* ********************************************************
* 타이머 정지 함수(이메일)
******************************************************** */
const fn_stop_email_timer = function() {
if (timerRunning) {
clearInterval(countdown);
$('#timer').text('05:00');
$('#mbtlCert').val('');
$('#emailAuthContent').hide();
$('#email').attr("readonly", false);
timerRunning = false;
}
}
/* ********************************************************
* 휴대폰 인증 확인
******************************************************** */
@@ -517,63 +669,182 @@
}
};
/**********************************************
* 이메일 형식 유효성 체크 (올바른 이메일 형식일 때 True)
***********************************************/
const fn_check_email = function(email) {
/* ********************************************************
* 이메일 인증 확인
******************************************************** */
isChkd_own_email = false;
const fn_confim_own_email = function() {
var regular = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
if (first <= 0) return;
let sndngInnb = $('#sndngInnb').val();
let email = $('#email').val().trim().replace(/-/g, '');
let crtnb = $('#mbtlCert').val();
fn_stop_email_timer();
let params = {
'sndngInnb': sndngInnb,
'email': email,
'crtnb' : crtnb
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
$('#emailAuthOkBtn').show();
$('#emailAuthBtn').hide();
isChkd_own_email = true;
fn_change_email();
$('#email').attr("readonly", true);
}else {
fn_alert_show('인증번호가 일치하지 않습니다.');
return;
}
}
});
if(regular.test(email)){
return true;
}else{
return false;
}
}
/* ********************************************************
* email 합치기
* 이메일 인증 버튼 클릭시, 이메일 인증 박스 노출
******************************************************** */
const fn_make_email = function() {
const fn_show_emailAuth = function() {
let emailAuthBtn = $('#emailAuthBtn');
let emailAuthContent = $('#emailAuthContent');
let domain = $('input[name="emailSelect"]:checked').val();
let id = $('#id').val().trim();
$('[name=email]').val(domain == '직접입력' ? id : id + domain);
emailAuthContent.hide();
return $('[name=email]').val();
emailAuthBtn.click(function () {
if(!$('#email').val()){
fn_alert_show('휴대폰 번호를 입력해 주세요.');
$('#email').focus();
return;
}
// 기존 가입 여부 확인
fn_check_mbrwithdrawal_email();
// $('#emailAuthContent').show();
// $('#mbtlCert').focus();
// fn_email_sending_number();
});
}
/* ********************************************************
* 회원 정보 수정(이메일 변경)
******************************************************** */
const fn_change_email = function() {
let email = fn_make_email();
if(!fn_check_email(email)) {
fn_alert_show('올바른 이메일 형식이 아닙니다.');
$('#id').focus();
return;
}
if (confirm('이메일을 <spring:message code="confirm.common.update"/>')) {
if (confirm('이메일 주소를 <spring:message code="confirm.common.update"/>')) {
$.ajax({
type: "post",
url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>',
data: {
id : $("#id").val().trim(),
domain: $('input[name="emailSelect"]:checked').val().trim(),
email : email
email : $("#email").val()
},
success: function (data) {
let newEmail = JSON.parse(data.resBody.result);
newEmail = newEmail.paramVO.email;
$("#lagacyEmail").val(newEmail);
$("#lagacyEmail").text(newEmail);
$("#inputEmail").val(newEmail);
fn_alert_show('<spring:message code="success.common.update"/>');
$("#emailChngBtn").click();
// $("#emailChngBtn").click();
//초기화
first = 0;
fn_stop_email_timer();
// fn_stop_timer();
$('.update-text').val('');
$('.editContent .userForm__inputBox__alertText').hide();
// fn_set_domain('직접입력', 'reset');
if(isChkd_own_email){
$('.update-text').attr("readonly", false);
$('#email').attr("readonly", false);
$('#emailAuthBtn').show();
$('#emailAuthOkBtn').hide();
$('#resIdForm').hide();
$('#resPswdForm').hide();
isChkd_own_email = false;
}
// if(isChkd_own){
// $('.update-text').attr("readonly", false);
// $('#mbtlnb').attr("readonly", false);
// $('#phoneAuthBtn').show();
// $('#phoneAuthOkBtn').hide();
// $('#resIdForm').hide();
// $('#resPswdForm').hide();
// isChkd_own = false;
// }
}
});
}
}
};
/**********************************************
* 이메일 형식 유효성 체크 (올바른 이메일 형식일 때 True)
***********************************************/
// const fn_check_email = function(email) {
//
// var regular = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
//
// if(regular.test(email)){
// return true;
// }else{
// return false;
// }
// }
/* ********************************************************
* email 합치기
******************************************************** */
// const fn_make_email = function() {
//
// let domain = $('input[name="emailSelect"]:checked').val();
// let id = $('#id').val().trim();
// $('[name=email]').val(domain == '직접입력' ? id : id + domain);
//
// return $('[name=email]').val();
// }
/* ********************************************************
* 회원 정보 수정(이메일 변경)
******************************************************** */
<%--const fn_change_email = function() {--%>
<%-- let email = fn_make_email();--%>
<%-- if(!fn_check_email(email)) {--%>
<%-- fn_alert_show('올바른 이메일 형식이 아닙니다.');--%>
<%-- $('#id').focus();--%>
<%-- return;--%>
<%-- }--%>
<%-- if (confirm('이메일을 <spring:message code="confirm.common.update"/>')) {--%>
<%-- $.ajax({--%>
<%-- type: "post",--%>
<%-- url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>',--%>
<%-- data: {--%>
<%-- id : $("#id").val().trim(),--%>
<%-- domain: $('input[name="emailSelect"]:checked').val().trim(),--%>
<%-- email : email--%>
<%-- },--%>
<%-- success: function (data) {--%>
<%-- let newEmail = JSON.parse(data.resBody.result);--%>
<%-- newEmail = newEmail.paramVO.email;--%>
<%-- $("#lagacyEmail").val(newEmail);--%>
<%-- fn_alert_show('<spring:message code="success.common.update"/>');--%>
<%-- $("#emailChngBtn").click();--%>
<%-- }--%>
<%-- });--%>
<%-- }--%>
<%--}--%>
/* ********************************************************
* 우편번호 찾기
@@ -723,19 +994,29 @@
//초기화
first = 0;
fn_stop_timer();
fn_stop_email_timer();
// fn_stop_timer();
$('.update-text').val('');
$('.editContent .userForm__inputBox__alertText').hide();
fn_set_domain('직접입력', 'reset');
// fn_set_domain('직접입력', 'reset');
if(isChkd_own){
if(isChkd_own_email){
$('.update-text').attr("readonly", false);
$('#phoneAuthBtn').show();
$('#phoneAuthOkBtn').hide();
$('#emailAuthBtn').show();
$('#emailAuthOkBtn').hide();
$('#resIdForm').hide();
$('#resPswdForm').hide();
isChkd_own = false;
isChkd_own_email = false;
}
// if(isChkd_own){
// $('.update-text').attr("readonly", false);
// $('#phoneAuthBtn').show();
// $('#phoneAuthOkBtn').hide();
// $('#resIdForm').hide();
// $('#resPswdForm').hide();
// isChkd_own = false;
// }
}
/* ********************************************************
@@ -928,49 +1209,74 @@
</div>
</c:otherwise>
</c:choose>
<%-- <div class="userForm__inputBox__item">--%>
<%-- <div class="userForm__inputBox__itemTitle">휴대폰번호<span class="required-asterisk">*</span></div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <input type="text" class="input-text full number" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)"--%>
<%-- value="<c:out value="${ resultMap.result.mbtlnb }"/>" maxlength="13">--%>
<%-- <input type="hidden" name="mbtlnb" value="<c:out value="${resultMap.result.mbtlnb}"/>" id="inputMbtlnb">--%>
<%-- <button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button>--%>
<%-- <!-- 인증완료시 버튼 -->--%>
<%-- <button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>--%>
<%-- </div>--%>
<%-- <p class="userForm__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p>--%>
<%-- <div class="phoneAuth" id="phoneAuthContent">--%>
<%-- <input type="hidden" id="sndngInnb">--%>
<%-- <div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <div class="inputTimer">--%>
<%-- <input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">--%>
<%-- <span class="inputTimer__time" id="timer">03:00</span>--%>
<%-- </div>--%>
<%-- <button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button>--%>
<%-- </div>--%>
<%-- <p class="userForm__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </div>--%>
<div class="userForm__inputBox__item">
<div class="userForm__inputBox__itemTitle">휴대폰번호<span class="required-asterisk">*</span></div>
<div class="userForm__inputBox__itemTitle">이메일<span class="required-asterisk">*</span></div>
<div class="inputWithBtn">
<input type="text" class="input-text full number" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)"
value="<c:out value="${ resultMap.result.mbtlnb }"/>" maxlength="13">
<input type="hidden" name="mbtlnb" value="<c:out value="${resultMap.result.mbtlnb}"/>" id="inputMbtlnb">
<button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button>
<input type="text" class="input-text full" id="email" title="이메일" placeholder="이메일을 입력해 주세요"
value="<c:out value="${ resultMap.result.email }"/>" maxlength="190">
<input type="hidden" name="email" value="<c:out value="${resultMap.result.email}"/>" id="inputEmail">
<button type="button" class="btn md theme outline" id="emailAuthBtn"><spring:message code="button.certificationEmail"/></button>
<!-- 인증완료시 버튼 -->
<button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>
<button type="button" class="btn md outline" id="emailAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>
</div>
<p class="userForm__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p>
<div class="phoneAuth" id="phoneAuthContent">
<p class="userForm__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>
<div class="phoneAuth" id="emailAuthContent">
<input type="hidden" id="sndngInnb">
<div>
<div class="inputWithBtn">
<div class="inputTimer">
<input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">
<span class="inputTimer__time" id="timer">03:00</span>
<span class="inputTimer__time" id="timer">05:00</span>
</div>
<button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button>
<button type="button" class="btn md gray" onclick="fn_confim_own_email();"><spring:message code="button.ok"/></button>
</div>
<p class="userForm__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>
</div>
</div>
</div>
<div class="userForm__inputBox__item">
<div class="userForm__inputBox__itemTitle">이메일<span class="required-asterisk">*</span></div>
<div class="inputWithBtn">
<input class="input-text full" type="email" id="lagacyEmail" title="이메일" placeholder="이메일" value="<c:out value='${ resultMap.result.email }'/>" readonly>
<button type="button" class="editBtn btn md gray2" type="button" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>
</div>
</div>
<div class="editContent">
<div class="editContent__innerBox">
<input type="hidden" name="email" value=""/>
<div class="emailInput">
<input class="input-text full" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="40">
<button class="emailInput__btn" role="button" data-micromodal-trigger="emailSelectPop" id="emailSelectBtn">직접입력</button>
</div>
<p class="userForm__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>
<button type="button" class="btn outline full lg" onclick="fn_change_email();"><spring:message code="button.ok"/></button>
</div>
</div>
<%-- <div class="userForm__inputBox__item">--%>
<%-- <div class="userForm__inputBox__itemTitle">이메일<span class="required-asterisk">*</span></div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <input class="input-text full" type="email" id="lagacyEmail" title="이메일" placeholder="이메일" value="<c:out value='${ resultMap.result.email }'/>" readonly>--%>
<%-- <button type="button" class="editBtn btn md gray2" type="button" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- <div class="editContent">--%>
<%-- <div class="editContent__innerBox">--%>
<%-- <input type="hidden" name="email" value=""/>--%>
<%-- <div class="emailInput">--%>
<%-- <input class="input-text full" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="40">--%>
<%-- <button class="emailInput__btn" role="button" data-micromodal-trigger="emailSelectPop" id="emailSelectBtn">직접입력</button>--%>
<%-- </div>--%>
<%-- <p class="userForm__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>--%>
<%-- <button type="button" class="btn outline full lg" onclick="fn_change_email();"><spring:message code="button.ok"/></button>--%>
<%-- </div>--%>
<%-- </div>--%>
<div class="userForm__inputBox__item">
<div class="userForm__inputBox__itemTitle">생년월<span class="required-asterisk">*</span></div>
<div class="inputHalf">