JavaScript :: 기본 회원가입 폼 작성

김병철·2022년 11월 26일
0

JavaScript

목록 보기
11/11

JavaScript

기본 회원가입 폼 작성

JavaScript 정규표현식을 사용하여 기본 회원가입 폼을 작성한다.

<fieldset>
    <legend>기본 회원가입</legend>
    <h3>
    아이디 : 첫 글자는 반드시 영문자, 그리고 영문자, 숫자를 포함하여 총 4-12자로 입력<br>
    비밀번호 : 영문자, 숫자, 특수문자!@#$%^&*()로 총 8-15자로 입력<br>
    비밀번호 확인 : 위의 비밀번호와 일치하게<br>
    이름 : 한글로만 이루어져야 하며 2글자 이상으로 입력<br>
    이메일 : 이메일 형식에 맞춰서. @ 필요<br>
    취미 : placeholder로 축구,농구,야구,독서 등<br>
    거주지 : 드롭박스로 선택하도록<br>
    회원가입버튼 : 폼 전달
    취소 : 모두 리셋?
    </h3>    
</fieldset>
<br><br>
<form action="join.go">
    <label for="userId">아이디</label>
    <input type="text" name="" id="userId">
    <br><br>
    <label for="userPwd">비밀번호</label>
    <input type="password" name="" id="userPwd">
    <br><br>
    <label for="checkPwd">비밀번호 확인</label>
    <input type="password" name="" id="checkPwd">
    <br><br>
    <label for="userName">이름</label>
    <input type="text" name="" id="userName">
    <br><br>
    <label for="userEmail">이메일</label>
    <input type="text" name="" id="userEmail">
    <br><br>
    <label for="userHobby">취미</label>
    <input type="text" name="" id="userHobby" placeholder="축구, 농구, 야구, 독서 등">
    <br><br>
    <label for="userLocation">거주지</label>
    <select name="location" id="userLocation" onchange="handleOnChange(this)">
        <option value="seoul">서울</option>
        <option value="incheon">인천</option>
        <option value="anayang">안양</option>
        <option value="seongnam">성남</option>
        <option value="bucheon">부천</option>
        <option value="suncheon">순천</option>
        <option value="anseong">안성</option>
    </select>
    <br><br>
    <input type="submit" id="joinSubmit" value="회원 가입" onclick="return join();">
    <button onclick="return cancel();">취소</button>
</form>
<script>
    function join(){
        var userId = document.getElementById("userId").value;
        var userPwd = document.getElementById("userPwd").value;
        var checkPwd = document.getElementById("checkPwd").value;
        var userName = document.getElementById("userName").value;
        var userEmail = document.getElementById("userEmail").value;
        var userHobby = document.getElementById("userHobby").value;
        var userLocation = document.getElementById("userLocation").value;

        
        // 아이디
        var result = idCheck(userId);
        if(!result){ // false -> 
            window.alert("아이디 조건 불일치");
            document.getElementById("userId").select();
            return false;
        }
        // 비밀번호
        result = pwdCheck(userPwd, checkPwd);
        if(!result){
            window.alert("비밀번호 다시 입력");
            document.getElementById("userPwd").select();
            return false;
        }
        
        // 이름
        result = nameCheck(userName);
        if(!result){
            window.alert("이름 다시 입력");
            document.getElementById("userName").select();
            return false;
        }

        // 이메일
        result = emailCheck(userEmail);
        console.log(result);
        if(!result){
            window.alert("이메일 다시 입력");
            document.getElementById("userEmail").select();
            return false;
        }

        // 취미 선택 제한 없음

        // 거주지 선택 제한 없음
        
        return true;
    }

    //----------------------------------- CHECK FUNCTION--------START
    function idCheck(userId){
        var regExp = /^[A-Z]\w{3,11}$/;

        if(!(regExp.test(userId.toUpperCase()))){
            return false;
        }
        return true;
    }

    function pwdCheck(userPwd, checkPwd){
        var regExp = /^[a-zA-Z0-9!@#$%^&*()]{8,15}$/;   // 숫자,영문자,특문 총 8~15자
        
        if(!(regExp.test(userPwd))){
            return false;
        }
        
        if(userPwd!==checkPwd){
            return false;
        }
        return true;
    }

    function nameCheck(userName){
        var regExp = /^[ㄱ-ㅎㅏ-ㅣ가-힣]{2,5}$/;    // 그냥 5글자로 제한둠

        if(!(regExp.test(userName))){
            return false;
        }
        return true;
    }

    function emailCheck(userEmail){
        var regExp = /^\w{2,}@[a-z]{1,}[.][a-z]{1,}$/;

        if(!(regExp.test(userEmail))){
            return false;
        }
        return true;
    }

    //----------------------------------- CHECK FUNCTION--------END

    function cancel(){
        document.getElementById("userId").value = "";
        document.getElementById("userPwd").value = "";
        document.getElementById("checkPwd").value = "";
        document.getElementById("userName").value = "";
        document.getElementById("userEmail").value = "";
        document.getElementById("userHobby").value = "";
        document.getElementById("userLocation").value = "";
        document.getElementById("userId").select();

        return false;
    }

</script>
  • 입력 폼 :

  • 에러 메세지 :

제대로 입력하지 않을 경우 위와 같은 알림 창이 뜬다.


profile
keep going on~

0개의 댓글