📝 회원 가입 유효성 검사
💡 전화번호 유효성 검사
🔎 signUp.jsp
.
.
.
<label for="memberTel">
<span class="required">*</span> 전화번호
</label>
<div class="signUp-input-area">
<input type="text" id="memberTel" name="memberTel"
placeholder="(- 없이 숫자만 입력)" maxlength="11">
</div>
<span class="signUp-message" id="telMessage">전화번호를 입력해주세요.(- 제외)</span>
.
.
.
<script src="${contextPath}/resources/js/member/signUp.js"></script>
</body>
</html>
🔎 signUp.js
const memberTel = document.getElementById("memberTel");
const telMessage = document.getElementById("telMessage");
memberTel.addEventListener("input", function(){
if(memberTel.value.trim().length == 0){
telMessage.innerText = "전화번호를 입력해주세요.(- 제외)";
telMessage.classList.remove("confirm", "error");
return;
}
const regExp = /^0(1[01679]|2|[3-6][1-5]|70)\d{3,4}\d{4}$/;
if(regExp.test(memberTel.value)){
telMessage.innerText = "유효한 전화번호 형식입니다.";
telMessage.classList.add("confirm");
telMessage.classList.remove("error");
} else{
telMessage.innerText = "전화번호 형식이 올바르지 않습니다.";
telMessage.classList.add("error");
telMessage.classList.remove("confirm");
}
})
💡 이메일 유효성 검사
🔎 signUp.jsp
.
.
.
<form action="signUp" method="post" name="signUp-form">
<label for="memberEmail">
<span class="required">*</span> 아이디(이메일)
</label>
<div class="signUp-input-area">
<input type="text" id="memberEmail" name="memberEmail"
placeholder="아이디(이메일)" maxlength="30"
autocomplete="off" required>
<button type="button">인증번호 받기</button>
</div>
<span class="signUp-message" id="emailMessage">메일을 받을 수 있는 이메일을 입력해 주세요.</span>
.
.
.
🔎 signUp.js
const memberEmail = document.getElementById("memberEmail");
const emailMessage = document.querySelector("#emailMessage");
memberEmail.addEventListener("input", function(){
if(memberEmail.value.trim().length == 0){
emailMessage.innerText = "메일을 받을 수 있는 이메일을 입력해 주세요.";
emailMessage.classList.remove("confirm", "error");
return;
}
const regExp = /^[\w\-\_]{4,}@[\w\-\_]+(\.\w+){1,3}$/;
if(regExp.test(memberEmail.value)){
emailMessage.innerText = "유효한 이메일 형식입니다.";
emailMessage.classList.add("confirm");
emailMessage.classList.remove("error");
}else{
emailMessage.innerText = "이메일 형식이 유효하지 않습니다."
emailMessage.classList.add("error");
emailMessage.classList.remove("confirm");
}
})
💡 닉네임 유효성 검사
🔎 signUp.jsp
.
.
.
<label for="memberNickname">
<span class="required">*</span> 닉네임
</label>
<div class="signUp-input-area">
<input type="text" id="memberNickname" name="memberNickname"
placeholder="닉네임" maxlength="10">
</div>
<span class="signUp-message" id="nicknameMessage">영어/숫자/한글 2~10글자 사이로 작성해주세요.</span>
.
.
.
🔎 signUp.js
const memberNickname = document.getElementById("memberNickname");
const nicknameMessage = document.getElementById("nicknameMessage");
memberNickname.addEventListener("input", function(){
if(memberEmail.value.trim().length == 0){
nicknameMessage.innerText = "영어/숫자/한글 2~10자 사이로 작성해주세요.";
nicknameMessage.classList.remove("confirm", "error");
return;
}
const regExp = /^[a-zA-Z0-9가-힣]{2,10}$/;
if(regExp.test(memberNickname.value)){
nicknameMessage.innerText = "유효한 닉네임 형식입니다.";
nicknameMessage.classList.add("confirm");
nicknameMessage.classList.remove("error");
} else{
nicknameMessage.innerText = "닉네임 형식이 유효하지 않습니다.";
nicknameMessage.classList.add("error");
nicknameMessage.classList.remove("confirm");
}
})
💡 비밀번호 유효성 검사
🔎 signUp.jsp
.
.
.
<label for="memberPw">
<span class="required">*</span> 비밀번호
</label>
<div class="signUp-input-area">
<input type="password" id="memberPw" name="memberPw"
placeholder="비밀번호" maxlength="30">
</div>
<div class="signUp-input-area">
<input type="password" id="memberPwConfirm"
placeholder="비밀번호 확인" maxlength="30">
</div>
<span class="signUp-message" id="pwMessage">영어, 숫자, 특수문자(!,@,#,-,_) 6~30글자 사이로 작성해주세요.</span>
.
.
.
🔎 signUp.js
const memberPw = document.getElementById("memberPw");
const memberPwConfirm = document.getElementById("memberPwConfirm");
const pwMessage = document.getElementById("pwMessage");
memberPw.addEventListener("input", function(){
if(memberPw.value.trim().length == 0){
pwMessage.innerText = "영어, 숫자, 특수문자(!,@,#,-,_) 6~30글자 사이로 작성해주세요.";
pwMessage.classList.remove("confirm", "error");
return;
}
const regExp = /^[\w!@#_-]{6,30}$/;
if(regExp.test(memberPw.value)){
if(memberPwConfirm.value.trim().length == 0){
pwMessage.innerText = "유효한 비밀번호 형식입니다.";
pwMessage.classList.add("confirm");
pwMessage.classList.remove("error");
}else{
checkPw();
}
} else{
pwMessage.innerText = "비밀번호 형식이 유효하지 않습니다.";
pwMessage.classList.add("error");
pwMessage.classList.remove("confirm");
}
})
memberPwConfirm.addEventListener("input", checkPw);
function checkPw(){
if(memberPwConfirm.value == memberPw.value){
pwMessage.innerText = "비밀번호가 일치합니다.";
pwMessage.classList.add("confirm");
pwMessage.classList.remove("error");
}else{
pwMessage.innerText = "비밀번호가 일치하지 않습니다.";
pwMessage.classList.add("error");
pwMessage.classList.remove("confirm");
}
}
💡 최종 확인!
🔎 signUp.jsp
.
.
.
<form action="signUp" method="post" name="signUp-form" onsubmit="return signUpValidate()">
.
.
.
🔎 signUp.js
const checkObj = {
"memberEmail" : false,
"memberPw" : false,
"memberPwConfirm" : false,
"memberNickname" : false,
"memberTel" : false
};
const memberTel = document.getElementById("memberTel");
const telMessage = document.getElementById("telMessage");
memberTel.addEventListener("input", function(){
if(memberTel.value.trim().length == 0){
telMessage.innerText = "전화번호를 입력해주세요.(- 제외)";
telMessage.classList.remove("confirm", "error");
checkObj.memberTel = false;
return;
}
const regExp = /^0(1[01679]|2|[3-6][1-5]|70)\d{3,4}\d{4}$/;
if(regExp.test(memberTel.value)){
telMessage.innerText = "유효한 전화번호 형식입니다.";
telMessage.classList.add("confirm");
telMessage.classList.remove("error");
checkObj.memberTel = true;
} else{
telMessage.innerText = "전화번호 형식이 올바르지 않습니다.";
telMessage.classList.add("error");
telMessage.classList.remove("confirm");
checkObj.memberTel = false;
}
})
const memberEmail = document.getElementById("memberEmail");
const emailMessage = document.querySelector("#emailMessage");
memberEmail.addEventListener("input", function(){
if(memberEmail.value.trim().length == 0){
emailMessage.innerText = "메일을 받을 수 있는 이메일을 입력해 주세요.";
emailMessage.classList.remove("confirm", "error");
checkObj.memberEmail = false;
return;
}
const regExp = /^[\w\-\_]{4,}@[\w\-\_]+(\.\w+){1,3}$/;
if(regExp.test(memberEmail.value)){
emailMessage.innerText = "유효한 이메일 형식입니다.";
emailMessage.classList.add("confirm");
emailMessage.classList.remove("error");
checkObj.memberEmail = true;
}else{
emailMessage.innerText = "이메일 형식이 유효하지 않습니다."
emailMessage.classList.add("error");
emailMessage.classList.remove("confirm");
checkObj.memberEmail = false;
}
})
const memberNickname = document.getElementById("memberNickname");
const nicknameMessage = document.getElementById("nicknameMessage");
memberNickname.addEventListener("input", function(){
if(memberEmail.value.trim().length == 0){
nicknameMessage.innerText = "영어/숫자/한글 2~10자 사이로 작성해주세요.";
nicknameMessage.classList.remove("confirm", "error");
checkObj.memberNickname = false;
return;
}
const regExp = /^[a-zA-Z0-9가-힣]{2,10}$/;
if(regExp.test(memberNickname.value)){
nicknameMessage.innerText = "유효한 닉네임 형식입니다.";
nicknameMessage.classList.add("confirm");
nicknameMessage.classList.remove("error");
checkObj.memberNickname = true;
} else{
nicknameMessage.innerText = "닉네임 형식이 유효하지 않습니다.";
nicknameMessage.classList.add("error");
nicknameMessage.classList.remove("confirm");
checkObj.memberNickname = false;
}
})
const memberPw = document.getElementById("memberPw");
const memberPwConfirm = document.getElementById("memberPwConfirm");
const pwMessage = document.getElementById("pwMessage");
memberPw.addEventListener("input", function(){
if(memberPw.value.trim().length == 0){
pwMessage.innerText = "영어, 숫자, 특수문자(!,@,#,-,_) 6~30글자 사이로 작성해주세요.";
pwMessage.classList.remove("confirm", "error");
checkObj.memberPw = false;
return;
}
const regExp = /^[\w!@#_-]{6,30}$/;
if(regExp.test(memberPw.value)){
checkObj.memberPw = true;
if(memberPwConfirm.value.trim().length == 0){
pwMessage.innerText = "유효한 비밀번호 형식입니다.";
pwMessage.classList.add("confirm");
pwMessage.classList.remove("error");
}else{
checkPw();
}
} else{
pwMessage.innerText = "비밀번호 형식이 유효하지 않습니다.";
pwMessage.classList.add("error");
pwMessage.classList.remove("confirm");
checkObj.memberPw = false;
}
})
memberPwConfirm.addEventListener("input", checkPw);
function checkPw(){
if(memberPwConfirm.value == memberPw.value){
pwMessage.innerText = "비밀번호가 일치합니다.";
pwMessage.classList.add("confirm");
pwMessage.classList.remove("error");
checkObj.memberPwConfirm = true;
}else{
pwMessage.innerText = "비밀번호가 일치하지 않습니다.";
pwMessage.classList.add("error");
pwMessage.classList.remove("confirm");
checkObj.memberPwConfirm = false;
}
}
function signUpValidate(){
let str;
for(let key in checkObj){
if(!checkObj[key]){
switch(key){
case "memberEmail" : str = "이메일이"; break;
case "memberPw" : str = "비밀번호가"; break;
case "memberPwConfirm" : str = "비밀번호 확인이"; break;
case "memberNickname" : str = "닉네임이"; break;
case "memberTel" : str = "전화번호가"; break;
}
str += " 유효하지 않습니다.";
alert(str);
document.getElementById(key).focus();
return false;
}
}
return true;
}