Search

회원가입 유효성검사

대분류
STEP06 이벤트응용
소분류
이벤트응용

영상

개념

<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <!-- Daum 우편번호 --> <script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script> <style> table, tr, td { border-collapse: collapse; border: 1px solid black; } #content-join { margin: 0 auto; width: 600px; } #title, #joinPro { text-align: center; } </style> </head> <body> <table id="content-join"> <tr> <td colspan="3" id="title"><h2>회원가입</h2></td> </tr> <tr> <td rowspan="2">아이디</td> <td><input id="input-memberId" type="text" placeholder="아이디를 입력해주세요" value="qwer1234"></td> <td><button id="button-memberIdCheckPro">중복확인</button></td> </tr> <tr> <td id="msg-memberId" colspan="2"></td> </tr> <tr> <td rowspan="2">비밀번호</td> <td colspan="2"><input id="input-memberPw" type="text" placeholder="비밀번호를 입력해주세요" value="Qwer1234!"></td> </tr> <tr> <td id="msg-memberPw" colspan="2"></td> </tr> <tr> <td rowspan="2">비밀번호확인</td> <td colspan="2"><input id="input-memberPwRe" type="text" placeholder="비밀번호를 한번 더 입력해주세요" value="Qwer1234!"></td> </tr> <tr> <td id="msg-memberPwRe" colspan="2"></td> </tr> <tr> <td rowspan="2">이름</td> <td colspan="2"><input id="input-memberName" type="text" placeholder="이름을 입력해주세요" value="홍길동"></td> </tr> <tr> <td id="msg-memberName" colspan="2"></td> </tr> <tr> <td rowspan="2">이메일</td> <td><input id="input-memberEmail" type="text" placeholder="이메일을 입력해주세요" value="qwer@naver.com"></td> <td><button id="button-memberEmailCheckPro">중복확인</button></td> </tr> <tr> <td id="msg-memberEmail" colspan="2"></td> </tr> <tr> <td rowspan="2">휴대폰</td> <td colspan="2"><input id="input-memberPhone" type="text" placeholder="숫자만 입력해주세요" value="01012345678"></td> </tr> <tr> <td id="msg-memberPhone" colspan="2"></td> </tr> <tr> <td rowspan="2">우편번호</td> <td><input id="input-memberZonecode" type="text" placeholder="우편번호를 입력해주세요" value="02830"></td> <td><button onclick="execDaumPostcode()">우편번호검색</button></td> </tr> <tr> <td id="msg-memberZonecode" colspan="2"></td> </tr> <tr> <td rowspan="2">도로명 주소</td> <td colspan="2"><input id="input-memberAddress" type="text" placeholder="도로명 주소를 입력해주세요" value="서울 성북구 아리랑로 3"></td> </tr> <tr> <td id="msg-memberAddress" colspan="2"></td> </tr> <tr> <td rowspan="2">남은 주소</td> <td colspan="2"><input id="input-memberAddressDetail" type="text" placeholder="남은 주소를 입력해주세요" value="남은주소"></td> </tr> <tr> <td id="msg-memberAddressDetail" colspan="2"></td> </tr> <tr> <td>성별</td> <td colspan="2"> <label><input type="radio" class="radio-memberGender" name="gender" value="1">남자</label> <label><input type="radio" class="radio-memberGender" name="gender" value="2">여자</label> <label><input type="radio" class="radio-memberGender" name="gender" value="0" checked>선택안함</label> </td> </tr> <tr> <td>유입 경로</td> <td colspan="2"> <select id="select-memberRoute"> <option value="1">인터넷 검색</option> <option value="2">지인 권유</option> <option value="3">SNS</option> <option value="4">광고</option> <option value="0" selected>기타</option> </select> </td> </tr> <tr> <td rowspan="2">이용약관동의</td> <td colspan="2"> <label><input id="check-memberAllTerms" type="checkbox">전체 동의</label> </td> </tr> <tr> <td colspan="2"> <label><input class="check-memberTerms" type="checkbox" value="1">이용약관 동의 (필수)<br></label> <label><input class="check-memberTerms" type="checkbox" value="2">개인정보취급 동의 (필수)<br></label> <label><input class="check-memberTerms" type="checkbox" value="3">14세 이상입니다. (필수)<br></label> <label><input class="check-memberTerms" type="checkbox" value="0">마케팅 메일 수신 동의 (선택)<br></label> </td> </tr> <tr> <td colspan="3" id="joinPro"> <button id="button-memberJoinPro">가입하기</button> </td> </tr> </table> <script> let idCheck = false; let emailCheck = false; let $inputMemberId = document.querySelector("#input-memberId"); $inputMemberId.addEventListener("input", inputMemberIdInput); let $buttonMemberIdCheckPro = document.querySelector("#button-memberIdCheckPro"); $buttonMemberIdCheckPro.addEventListener("click", buttonMemberIdCheckProClick); let $inputMemberPw = document.querySelector("#input-memberPw"); $inputMemberPw.addEventListener("input", inputMemberPwInput); let $inputMemberPwRe = document.querySelector("#input-memberPwRe"); $inputMemberPwRe.addEventListener("input", inputMemberPwReInput); let $inputMemberName = document.querySelector("#input-memberName"); $inputMemberName.addEventListener("input", inputMemberNameInput); let $inputMemberEmail = document.querySelector("#input-memberEmail"); $inputMemberEmail.addEventListener("input", inputMemberEmailInput); let $buttonMemberEmailCheckPro = document.querySelector("#button-memberEmailCheckPro"); $buttonMemberEmailCheckPro.addEventListener("click", buttonMemberEmailCheckProClick); let $inputMemberPhone = document.querySelector("#input-memberPhone"); $inputMemberPhone.addEventListener("input", inputMemberPhoneInput); let $inputMemberZonecode = document.querySelector("#input-memberZonecode"); let $inputMemberAddress = document.querySelector("#input-memberAddress"); let $inputMemberAddressDetail = document.querySelector("#input-memberAddressDetail"); let $inputMemberGender = document.querySelector("#input-memberGender"); let $checkMemberAllTerms = document.querySelector("#check-memberAllTerms"); $checkMemberAllTerms.addEventListener("click", checkMemberAllTermsClick); let $checkMemberTerms = document.querySelectorAll(".check-memberTerms"); for(let i=0; i<$checkMemberTerms.length; i++) { $checkMemberTerms[i].addEventListener("click", checkMemberTermsClick); } let $btnMemberJoinPro = document.querySelector("#button-memberJoinPro"); $btnMemberJoinPro.addEventListener("click", buttonMemberJoinProClick); /* 아이디 유효성 검사 */ function inputMemberIdInput() { let $msgMemberId = document.querySelector("#msg-memberId"); let regExp = RegExp(/^[A-Za-z0-9_\-]{6,16}$/); if(regExp.test($inputMemberId.value)) { $msgMemberId.innerHTML = ""; } else { $msgMemberId.innerHTML = "<span style='color:#F03F40; font-size:12px;'>6자 이상 16자 이하의 영문 혹은 영문과 숫자를 조합</span>"; } } /* 아이디 중복검사 */ function buttonMemberIdCheckProClick() { let regExp = RegExp(/^[A-Za-z0-9_\-]{6,16}$/); if($inputMemberId.value == "") { alert("아이디를 입력해주세요."); $inputMemberId.focus(); } else if(!regExp.test($inputMemberId.value)) { alert("6자 이상 16자 이하의 영문 혹은 영문과 숫자를 조합"); $inputMemberId.value = ""; $inputMemberId.focus(); } else { idCheck = true; /* 기능 구현하기 */ // 사용할 수 있는 아이디 입니다. // 사용 불가능한 아이디 입니다. } } /* 비밀번호 유효성 검사 */ function inputMemberPwInput() { let $msgMemberPw = document.querySelector("#msg-memberPw"); let regExp = RegExp(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^*()\-_=+\\\|\[\]{};:\'",.<>\/?]).{8,16}$/); if(regExp.test($inputMemberPw.value)) { $msgMemberPw.innerHTML = ""; } else { $msgMemberPw.innerHTML = "<span style='color:#F03F40; font-size:12px;'>영문 대문자와 소문자, 숫자, 특수문자를 하나 이상 포함하여 8~16자 조합</span>"; } } /* 비밀번호확인 유효성 검사 */ function inputMemberPwReInput() { let $msgMemberPwRe = document.querySelector("#msg-memberPwRe"); if($inputMemberPw.value == $inputMemberPwRe.value) { $msgMemberPwRe.innerHTML = ""; } else { $msgMemberPwRe.innerHTML = "<span style='color:#F03F40; font-size:12px;'>동일한 비밀번호 입력</span>"; } } /* 이름 유효성 검사 */ function inputMemberNameInput() { let $msgMemberName = document.querySelector("#msg-memberName"); let regExp = RegExp(/^[-]{2,6}$/); if(regExp.test($inputMemberName.value)) { $msgMemberName.innerHTML = ""; } else { $msgMemberName.innerHTML = "<span style='color:#F03F40; font-size:12px;'>2~6글자의 한글만 입력</span>"; } } /* 이메일 유효성 검사 */ function inputMemberEmailInput() { let $msgMemberEmail = document.querySelector("#msg-memberEmail"); let regExp = RegExp(/^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/); if(regExp.test($inputMemberEmail.value)) { $msgMemberEmail.innerHTML = ""; } else { $msgMemberEmail.innerHTML = "<span style='color:#F03F40; font-size:12px;'>이메일 형식으로 입력해 주세요.</span>"; } } /* 이메일 중복검사 */ function buttonMemberEmailCheckProClick() { let regExp = RegExp(/^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/); if($inputMemberEmail.value == "") { alert("이메일을 입력해주세요."); $inputMemberEmail.focus(); } else if(!regExp.test($inputMemberEmail.value)) { alert("이메일 형식으로 입력해 주세요."); $inputMemberEmail.value = ""; $inputMemberEmail.focus(); } else { emailCheck = true; /* 기능 구현하기 */ } } /* 휴대폰 유효성 검사 */ function inputMemberPhoneInput() { let $msgMemberPhone = document.querySelector("#msg-memberPhone"); let regExp = RegExp(/^01([0|1|6|7|8|9])([0-9]{3,4})([0-9]{4})$/); if(regExp.test($inputMemberPhone.value)) { $msgMemberPhone.innerHTML = ""; } else { $msgMemberPhone.innerHTML = "<span style='color:#F03F40; font-size:12px;'>휴대폰 형식으로 입력해 주세요.</span>"; } } /* 우편번호 검색 기능 */ function execDaumPostcode() { new daum.Postcode( { oncomplete: function( data ) { document.querySelector("#input-memberZonecode").value = data.zonecode; document.querySelector("#input-memberAddress").value = data.address; document.querySelector("#input-memberAddressDetail").focus(); } } ).open(); } /* 전체동의 체크 자동화 기능 */ function checkMemberAllTermsClick() { if($checkMemberAllTerms.checked) { for(let i=0; i<$checkMemberTerms.length; i++) { $checkMemberTerms[i].checked = true; } } else { for(let i=0; i<$checkMemberTerms.length; i++) { $checkMemberTerms[i].checked = false; } } } function checkMemberTermsClick() { let count = 0; for(let i=0; i<$checkMemberTerms.length; i++) { if($checkMemberTerms[i].checked) { count += 1; } } if(count == $checkMemberTerms.length) { $checkMemberAllTerms.checked = true; } else { $checkMemberAllTerms.checked = false; } } /* 가입하기 */ function buttonMemberJoinProClick() { // 아이디 입력 확인 if($inputMemberId.value == "") { $inputMemberId.focus(); alert("아이디를 입력해주세요."); return false; } // 아이디 중복확인 if(idCheck == false) { alert("아이디를 중복확인을 해주세요."); return false; } // 비밀번호 입력 확인 if($inputMemberPw.value == "") { alert("비밀번호를 입력해주세요."); return false; } // 비밀번호확인 입력 확인 if($inputMemberPwRe.value == "") { alert("비밀번호 확인을 입력해주세요."); return false; } // 이름 입력 확인 if($inputMemberName.value == "") { alert("이름을 입력해주세요."); return false; } // 이메일 입력 확인 if($inputMemberEmail.value == "") { alert("이메일을 입력하세요."); return false; } // 이메일 중복확인 if(emailCheck == false) { alert("이메일 중복 확인를 해주세요."); return false; } // 휴대폰 입력 확인 if($inputMemberPhone.value == "") { alert("휴대폰 번호를 입력해주세요."); return false; } // 우편번호 입력 확인 if($inputMemberZonecode.value == "") { alert("우편번호를 입력해주세요."); return false; } // 도로명 입력 확인 if($inputMemberAddress.value == "") { alert("도로명을 입력해주세요."); return false; } // 남은 주소 입력 확인 if($inputMemberAddressDetail.value == "") { alert("남은 주소를 입력해주세요."); return false; } // 이용약관 동의 필수항목 선택 확인 let $checkMemberTerms = document.querySelectorAll(".check-memberTerms"); let checkResult = true; for(let i=0; i<$checkMemberTerms.length - 1; i++) { if(!$checkMemberTerms[i].checked) { checkResult = false; break; } } if(checkResult == false) { alert("필수 약관에 동의해주세요."); return false; } return true; } </script> </body> </html>
Java
복사