초록꼬마의 devlog
article thumbnail

2021.12.21(화)

🌿 JavaScript 정규표현식

<!--2021.12.21(화) 실습 11h20 + 강사님 해설 12h15-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>정규표현식 이용_회원 가입 form</title>
    <style>
        label {
            font-size: 10px;
            color: rgb(99, 180, 99);
        }
    </style>
</head>
<body>
    <!--2021.12.31(금) JavaScript, jQuery(+html,css) 평가 시 이 정도 양식은 만들 수 있어야 함; 지난 frontend 평가 같이 웹페이지 구조 잡기는 x; JavaScript는 브라우저에서 작동하는 바, html, css 기본적으로 알아야 활용 가능함-->
    <form action="insert.me">
        * ID : <input type="text" name="userId" id="userId" required><br>
        <label for="">첫 글자는 반드시 영문 소문자로, 그리고 영문 소문자, 숫자를 포함해서 총 4-12로 입력하세요</label><br><br>

        * 비밀번호 : <input type="password" name="userPwd" id="userPwd" required><br>
        <label for="">영문자, 숫자, 특수문자(!@#%^)로 총 8~15자로 입력하세요</label><br><br>

        * 비밀번호 확인 : <input type="password" id="checkPwd" required><br>
        <label for="">위의 비밀번호와 일치하게 입력하세요</label><br><br>

        * 이름 : <input type="text" id="name" name="name" required><br>
        <label for="">한글로만 이루어져야 하며 2글자 이상으로 입력하세요</label><br><br>

        이메일 : <input type="email" name="email" id="email"><br>
        <label for="">이메일 형식에 맞춰서 입력하세요</label><br><br>

        취미 : <input type="text" name="hobby" id="hobby" placeholder="독서, 피아노, 그림, 산책 등" list="hobbylist">
        <datalist id="hobbylist">
            <option value="read">독서</option>
            <option value="piano">피아노</option>
            <option value="paint">그림</option>
            <option value="walk">산책</option>
        </datalist>
        <br><br>

        거주지 :
        <select name="address" id="address">
            <option value="seoul" selected>서울</option>
            <option value="stockholm">스톡홀름</option>
            <option value="london">런던</option>
            <option value="berlin">베를린</option>
            <option value="others">기타</option>
        </select><br><br>

        <input type="submit" value="회원 가입" onclick="return validate();"> <!--'회원 가입' 버튼을 누르는 순간 함수 호출해서 유효성 검사 실행; false일 경우 못 넘어가게 하기 위해 return 기재-->
        <input type="reset" value="취소">
    </form>

    <script>
        function validate() {
            // 유효성 검사 대상 = id, 비밀번호, 비밀번호 확인, 이름
            // input 요소객체 받아오기
            var userId = document.getElementById('userId');
            var userPwd = document.getElementById('userPwd');
            var checkPwd = document.getElementById('checkPwd');
            var name = document.getElementById('name');

            // ID 형식 유효성 검사: 첫 글자는 반드시 영문자 + 영문자나 숫자 총 4-12로 입력            
            var regExp = /^[a-z][a-z\d]{3,11}$/; // 강사님 방식            
            // var regExp1 = /^[a-z]([a-z\d]{3,11})$/; // 나의 시도

            if (!regExp.test(userId.value)) {
                alert('잘못된 형식의 ID입니다. 다시 입력해주세요~');
                userId.select();
                return false; // 나는 이 return 용도를 잘 이해 못 했어서 빼먹고 풀었었음..
            }

            // 비밀번호 형식 유효성 검사: 영문자, 숫자, 특수문자(!@#%^)로 총 8~15자로 입력
            regExp = /^[a-z\d!@#$%^]{8,15}$/i; // 강사님 방식; i로 대/소문자 상관 없이 검사
            // var regExp2 = /^[a-zA-Z\d!@#$%^]{8,15}$/; // 나의 시도; 나의 질문 = var regExp2와 같이 정규표현식 변수 새로 안 만들고, regExp 변수를 계속 (덮어?)쓰는 이유가 따로 있을까?

            // 나의 질문 = 대문자, 숫자, 특수문자 최소 1개씩 필수 포함시키려면 어떻게 써야 할까?
            var regExp2 = /^(.[A-Z])(.\d)(.[!@#$%^])[a-zA-Z\d!@#%^]{8,15}$/; // 나의 시도
            /* 인터넷 검색
            http://daplus.net/javascript-%EC%95%94%ED%98%B8%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%80-8-%EC%9E%90-%EC%9D%B4%EC%83%81-%ED%95%98%EB%82%98-%EC%9D%B4%EC%83%81%EC%9D%98-%EC%88%AB%EC%9E%90/
            최소 8자 및 최대 10자, 하나 이상의 대문자, 하나의 소문자, 하나의 숫자 및 하나의 특수 문자
            /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$/
            */

            if (!regExp.test(userPwd.value)) {
                alert('잘못된 형식의 비밀번호입니다. 다시 입력해주세요~');
                userPwd.select();
                return false; // 나는 이 return 빼먹고 풀었었음..
            }

            // 비밀번호 확인/일치 검사
            if (userPwd.value != checkPwd.value) {
                alert('비밀번호가 일치하지 않습니다. 다시 입력해주세요~');
                checkPwd.select();
                return false; // 나는 이 return 빼먹고 풀었었음..
            }

            // 이름 형식 유효성 검사
            regExp = /^[가-힣]{2,}$/;

            if (!regExp.test(name.value)) {
                alert('잘못된 형식의 이름입니다. 다시 입력해주세요~');
                name.select();
                return false; // 나는 이 return 빼먹고 풀었었음..
            }

            return true; // 나는 이 return 빼먹고 풀었었음..
        }
    </script>
</body>
</html>

🌿 jQuery

🌱 개요

  • 존 레식에 의해 개발된 경량 JavaScript 라이브러리
  • 복잡했던 코드를 쉽게 구현하였는데, 특히 DOM과 관련된 처리, 일관된 이벤트 연결, 시각적 효과, Ajax 애플리케이션 등을 쉽게 구현
  • jQuery 플러그인을 통해 차트 작성, 슬라이드 쇼, 엑셀 같은 테이블도 간단히 구현 가능

🌱 연결

  1. CDN(Content Delivery Network)을 통한 연결 = 온라인으로 js파일을 불러와 실행
<script type=‘text/javascript’ src=‘http://code.jquery.com/jquery-버전.js’></script>
<!--최신 버전 사용 = jquery-latest.min.js, jquery-latest.js -> 이전과 호환이 안 되는 경우가 있어 버전에 유의-->
  1. 파일 다운로드 연결(오프라인에서 사용하는 경우) = jQuery 홈페이지에서 최신 버전 js파일 다운로드

🌱 시작

  • jQuery를 사용하는 웹 페이지 시작 코드
  • $ 또는 jquery 사용
  • window.onload속성과 같은 개념의 메소드로, 페이지 내용 로드 후 ready() 메소드 실행
<script>
  $(document).ready(function(){}); 또는 $(function(){});
</script>

🌱 기본선택자

  • id 선택자
  • 태그 선택자
  • 클래스 선택자

📗 homework: 세미프로젝트 준비 + jQuery 클래스 선택자 실습 문제