1) UsrMemberController getLoginIdDup()
@RequestMapping("/usr/member/getLoginIdDup")
@ResponseBody
public ResultData getLoginIdDup(String loginId) {
if (Ut.empty(loginId)) {
return ResultData.from("F-A", "아이디를 입력해주세요");
}
Member exsistMember = memberService.getMemberByLoginId(loginId);
if (exsistMember != null) {
return ResultData.from("F-A2", "이미 사용중인 아이디입니다.", "loginId", loginId);
}
return ResultData.from("S-1", "사용 가능한 아이디 입니다.", "loginId", loginId);
}
2) checkLoginIdDup()
let loginIdDup = true;
function checkLoginIdDup(el) {
$('.loginId-msg').empty();
const form = $(el).closest('form').get(0);
$.get('../member/getLoginIdDup', {
loginId : form.loginId.value,
ajaxMode : 'Y'
}, function(data) {
$('.loginId-msg').html('<div class="mt-2">' + data.msg + '</div>');
if (data.success) {
loginIdDup = false;
} else {
loginIdDup = true;
}
}, 'json');
}
loginIdDup 변수
: Ajax통신을하여 가져온 ResultData를 바탕으로 변수 조작하여 submit제한loginIdDup = false
즉, 중복되지 않음1) checkLoginIdDup()
let validLoginId = "";
if (form.loginId.value != validLoginId) {
alert('사용할 수 없는 아이디입니다!');
form.loginId.focus();
return;
}
function checkLoginIdDup(el) {
const form = $(el).closest('form').get(0);
if (form.loginId.value.length == 0) {
form.loginId.focus();
return;
}
$('.loginId-msg').html('<div class="mt-2">확인중...</div>');
$.get('../member/getLoginIdDup', {
loginId : form.loginId.value,
ajaxMode : 'Y'
}, function(data) {
$('.loginId-msg').html('<div class="mt-2">' + data.msg + '</div>');
if (data.success) {
validLoginId = data.data1;
} else {
validLoginId = '';
}
}, 'json');
}
let validLoginId
에 작성한 아이디를 대입,중복이라면 ''
대입if (form.loginId.value != validLoginId) {
중복되지 않은 아이디 이면 valIdLoginId는 입력받은 아이디가 채워져있고''
로 채워져있으므로 같지 않다면 중복된아이디이므로 submit을 하지않음1) checkLoginIdDup()
function checkLoginIdDup(el) {
const form = $(el).closest('form').get(0);
if (form.loginId.value.length == 0) {
validLoginId = '';
return;
}
if (validLoginId == form.loginId.value){
return;
}
$('.loginId-msg').html('<div class="mt-2">확인중...</div>');
if (validLoginId == form.loginId.value){
return;}
키보드 입력시(onkeyup
) Ajax통신 하고있으므로
Insert키 ,방향키 등 입력한 아이디의 변경 되지 않아도 Ajax통신이 이루어지기 때문에
이를 방지하기위해 아이디의 변경이 되지않을시 Ajax통신을 하지 않게 구현
checkLoginIdDupDebounced
const checkLoginIdDupDebounced = _.debounce(checkLoginIdDup,1000);