본문 바로가기

html

html-정규식 사용, 유효성검사 회원가입

html

<!DOCTYPE html>
<html >

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<style>
    th {
        background-color: #A9BCF5;
    }


    table,
    th,
    tr,
    td {
        border: 1px solid;
    }
</style>
<script src="js/JoinFormJS.js"></script>
<script src="js/daum.js"></script>
<script src="https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>

<body>

    <form name="join">
        <div align="center">
            <table>
                <tr>
                    <th colspan="2">회원 기본 정보</th>
                </tr>
                <tr>
                    <td align="center">아이디 : </td>
                    <td>
                        <input type="text" id="userId" name="userId">4~12자의 영문 대소문자와 숫자로만 입력
                    </td>
                </tr>
                <tr>
                    <td align="center">비밀번호 : </td>
                    <td>
                        <input type="password" id="userPw" name="userPw">4~12자의 영문 대소문자와 숫자로만 입력
                    </td>
                </tr>
                <tr>
                    <td align="center">비밀번호 확인 : </td>
                    <td>
                        <input type="password" id="userPwConfirm" name="userPwConfirm">
                        <input type="button"  value="확인" onclick="checkpass()">
                    </td>
                </tr>
                <tr>
                    <td align="center">메일주소 : </td>
                    <td>
                        <input type="text" id="userMail" name="userMail">예) id@domain.com
                    </td>
                </tr>
                <tr>
                    <td align="center">이름 : </td>
                    <td>
                        <input type="text" id="userName" name="userName">
                    </td>
                </tr>
                <tr>
                    <th colspan="2">개인 신상 정보</th>
                </tr>
                <tr>
                    <td align="center">우편번호 : </td>
                    <td>
                        <input type="text" id="sample6_postcode" placeholder="우편번호">

                        <input type="button" onclick="sample6_execDaumPostcode()" value="우편번호 찾기"><br>

                        <input type="text" id="sample6_address" placeholder="주소">

                        <input type="text" id="sample6_address2" placeholder="상세주소">
                    </td>
                </tr>
                <tr>
                    <td align="center">주민등록번호 : </td>
                    <td>
                        <input type="text" id="jubun1" name="jubun1" style="width: 72px;"> -
                        <input type="text" id="jubun2" name="jubun2" style="width: 72px;"> 예) 123456-1234567
                    </td>
                </tr>
                <tr>
                    <td align="center">생일 : </td>
                    <td>
                        <input type="text" id="year" name="year" style="width: 70px;" readonly="readonly">년
                        <input type="text" id="month" name="month" style="width: 20px;" readonly="readonly">월
                        <input type="text" id="date" name="date" style="width: 20px;" readonly="readonly">일
                    </td>
                </tr>
                <tr>
                    <td align="center">관심분야 : </td>
                    <td>
                        <input type="checkbox" name="hobby" value="computer">컴퓨터
                        <input type="checkbox" name="hobby" value="internet">인터넷
                        <input type="checkbox" name="hobby" value="travle">여행
                        <input type="checkbox" name="hobby" value="movie">영화감상
                        <input type="checkbox" name="hobby" value="music">음악감상
                    </td>
                </tr>
                <tr>
                    <td align="center">자기소개 : </td>
                    <td>
                        <textarea id="intro" name="intro" style="width: 450px; height: 200px; resize: none;"></textarea>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center">
                        <input type="button" onclick="joininsert()" value="회원 가입">
                        <input type="reset" value="다시 입력">
                    </td>
                </tr>
            </table>
    </form>



</body>


</html>

JoinFormJS.js

function joininsert() {
	var objuserId = document.getElementById("userId");
	//정규식
	var re = /^[a-zA-Z0-9]{4,12}$/ // 아이디와 패스워드가 적합한지 검사할 정규식
	var re2 = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;


	var objuserPw = document.getElementById("userPw");
	var objusePwConfirm = document.getElementById("userPwConfirm");
	var objMail = document.getElementById("userMail");
	var objuserName = document.getElementById("userName");
	var objhobby = document.getElementsByName("hobby");
	var objintro = document.getElementById("intro");

	// address
	var address1 = document.getElementById("sample6_postcode");
	var address2 = document.getElementById("sample6_address");
	var address3 = document.getElementById("sample6_address2");

	// 주민 번호
	var objjubun1 = document.getElementById("jubun1");  //주민번호 앞자리
	var objjubun2 = document.getElementById("jubun2"); // 주민번호 뒷자리

	var objArr1 = new Array();      //주민번호 6개
	var objArr2 = new Array();      //주민번호 뒤 7개


	if (objuserId.value == "") {  //아이디 공백일때.

		alert("id를 입력해주세요.");
		objuserId.focus();
		return false;
	}
	else if (re.test(objuserId.value) != true) {
		alert("id 조건이 맞지않소.");
		objuserId.value = "";       //초기화
		objuserId.focus();
		return false;
	}
	else if (objuserPw.value == "") {  //패스워드 공백일때.
		alert("password를 입력해주세요.")
		objuserPw.focus();
		return false;
	}
	else if (objusePwConfirm.value == "") {  // 패스워드 공백일때.
		alert("password를 입력해주세요.")
		objusePwConfirm.focus();
		return false;
	}
	else if (objMail.value == "") {   //이메일 공백
		alert("email를 입력해주세요.")
		objMail.focus();
		return false;

	}
	else if (re2.test(objMail.value) != true) {
		alert("이메일이 올바르지 않습니다.")
		objmail.value == "";
		objMail.focus();
		return false;
	}

	else if (objuserName.value == "") {   //이름 공백
		alert("name를 입력해주세요.")
		objuserName.focus();
		return false;

	}

	//주소 4종 세트
	else if (address1.value == "") {
		alert("우편번호를 입력해주세요.")
		objuserName.focus();
		return false;

	}


	//주민번호.
	else if (objjubun1.value != "") {

		for (var i = 0; i < objjubun1.length; i++) {      //앞자리 배열에 담기
			objArr1 = objjubun1.value.charAt(i);

		}
		for (var i = 0; i < objjubun2.length; i++) {       //뒷자리 배열에 담기/
			objArr2 = objjubun2.value.charAt(i);
		}

	}
	else if (objjubun1.value == "" && objjubun2.value == "") {
		alert("주민등록번호를 다시 입력해주세요.");
		objjubun1.focus();
		return false;
	}
	if (objjubun2.value.charAt(0) == 1 || objjubun2.value.charAt(0) == 2) {  //남자는 1 여자는 2
		var y = "19" + parseInt(objjubun1.value.substring(0, 2));
		var m = parseInt(objjubun1.value.substring(2, 4));
		var d = parseInt(objjubun1.value.substring(4, 6));

		document.getElementById("year").value = y;
		document.getElementById("month").value = m;
		document.getElementById("date").value = d;
		/*join.year.value = y;
	   join.month.value = m;
		join.date.value = d;*/

	}
	if(objjubun2.value.charAt(0) == 3 || objjubun2.value.charAt(0) == 4) {  //남자는 1 여자는 2
		var y = "20" + parseInt(objjubun1.value.substring(0, 2));
		var m = parseInt(objjubun1.value.substring(2, 4));
		var d = parseInt(objjubun1.value.substring(4, 6));
		/*
			join.year.value = y;
			join.month.value = m;
			 join.date.value = d;*/
		document.getElementById("year").value = y;
		document.getElementById("month").value = m;
		document.getElementById("date").value = d;

	}


	//게시판
	else if (objintro.value == "") {
		alert("자기소개를 입력해주세요");
		objintro.focus();
		return false;
	}

	//관심분야
	var hobby = new Array();


	for (var i = 0; i < objhobby.length; i++) {
		{
			if (objhobby[i].checked) {
				hobby.push(objhobby[i].value);   //관심분야 저장
			}
		}
	}
	if (hobby.length < 1)           //입력이 안될때  1
	{
		alert("관심분야를 선택해주세요.");
		return false;
	}
	
	

}

//비밀번호 확인.
function checkpass() {
	
	
	var objuserPw = document.getElementById("userPw");
	var objusePwConfirm = document.getElementById("userPwConfirm");

	if (objuserPw.value != objusePwConfirm.value || objuserPw.value == "") {

		alert("패스워드가 다릅니다. 다시입력해주세요")
		objuserPw.value = "";
		objusePwConfirm.value = "";
		objuserPw.focus();
		return false;

	} else {
		alert("패스워드가 일치합니다.")
		objMail.focus();
		return true;
	}
}

 

js

///주소 api
function sample6_execDaumPostcode() {

    new daum.Postcode({

        oncomplete: function(data) {

            // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.



            // 각 주소의 노출 규칙에 따라 주소를 조합한다.

            // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.

            var fullAddr = ''; // 최종 주소 변수

            var extraAddr = ''; // 조합형 주소 변수



            // 사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.

            if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우

                fullAddr = data.roadAddress;



            } else { // 사용자가 지번 주소를 선택했을 경우(J)

                fullAddr = data.jibunAddress;
            }



            // 사용자가 선택한 주소가 도로명 타입일때 조합한다.

            if(data.userSelectedType === 'R'){

                //법정동명이 있을 경우 추가한다.

                if(data.bname !== ''){

                    extraAddr += data.bname;

                }

                // 건물명이 있을 경우 추가한다.

                if(data.buildingName !== ''){

                    extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);

                }

                // 조합형주소의 유무에 따라 양쪽에 괄호를 추가하여 최종 주소를 만든다.

                fullAddr += (extraAddr !== '' ? ' ('+ extraAddr +')' : '');

            }



            // 우편번호와 주소 정보를 해당 필드에 넣는다.

            document.getElementById('sample6_postcode').value = data.zonecode; //5자리 새우편번호 사용

            document.getElementById('sample6_address').value = fullAddr;



            // 커서를 상세주소 필드로 이동한다.

            document.getElementById('sample6_address2').focus();

        }

    }).open();
}

 

출력값

'html' 카테고리의 다른 글

html - 계산기를 만들어보자!  (0) 2020.08.21
Javascript파일을 이용한 글자 바꾸기  (0) 2020.08.19
html - 회원가입 폼  (0) 2020.08.19