폼 관련 이벤트

imjingu·2023년 7월 26일
0

개발공부

목록 보기
229/481

폼 관련 이벤트
focus() : 선택된 요소에 포커스가 들어오면 이벤트가 발생.
blur() : 선택된 요소에서 포커스가 떠나면 이벤트가 발생.
focusin() : 선택된 요소나 자식 요소에 포커스가 들어오면 이벤트가 발생.
focusout() : 선택된 요소나 자식 요소에 포커스가 떠나면 이벤트가 발생.
change() : 선택된 요소에 값이 변경 되었을 때 이벤트가 발생.
select() : 선택된 요소의 텍스트를 선택하였을 때 이벤트가 발생.
submit() : form이 전송될 때 이벤트가 발생.

관련 메서드 및 속성
val() : 입력 요소의 갑을 가져오거나 변경할 수 있슴.
length : 요소나 요소 값의 개수를 취득.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <title>Document</title>
    <script>
        /*
        
        */
        
        $(function() {
            // $('#m1 input').focus(function() {
            //     $(this).addClass('on');
            // }).blur(function() {
            //     $(this).removeClass('on');
            // });

            $('#m1 input').on({
                focus:function() {
                    $(this).addClass('on');
                },
                blur: function() {
                    $(this).removeClass('on');
                }
            });

            $('#m2').focus(function() {
                $(this).children('input').addClass('on');
            }).focusout(function() {
                $(this).children().removeClass('on');
            });

            // $('#m3 input').change(function() {
            //     let c = confirm('값을 바구시겠습니까?')
            //     if (!c) {
            //         $(this).val(10);
            //     }
            // });

            $('#m3 input').blur(function() {
                if($(this).val() !== '10') {
                    let c = confirm('값을 바구시겠습니까?');
                    if (!c) {
                        $(this).val(10);
                    }
                }
            });

            $('#m4 input').select(function() {
                let txt = $(this).val();
                let size = txt.length;
                alert(`${txt} : 총 ${size} 문자를 선택하셨습니다.`);
            });

            // id pw 입력 안했을시, 아이디 비밀번호를 입력하세요 를 띄움
            $('.frm').submit(function() {
                if(!$('#id').val().trim()) { // 값이 없다면 , trim()은 공백을 없애줌
                    $('.msg1').css('display', 'block')
                    $('#id').focus();
                }
                else {
                    $('.msg1').css('display', 'none');
                }

                if(!$('#pw').val().trim()) {
                    $('.msg2').css('display', 'block')
                    $('#pw').focus();
                    return false;
                }
            });
            
        });
    
    </script>
    <style>
        * { margin: 5px;}
        p { color: red; display: none;}
        input[type=text].on { background: red; color: #ffff;}
    </style>
</head>
<body>
    <div id="m1">
        <input type="text" placeholder="값을 입력하세요".>
    </div>
    <div id="m2">
        <input type="text" placeholder="값을 입력하세요".>
    </div>
    <div id="m3">
        <span>값을 수정한 후 다음 입력요소로 이동하세요.</span>
        <input type="text" value="10">
    </div>
    <div id="m4">
        <input type="text" placeholder="텍스트를 드래그하세요".>
    </div>
    <form action="#" class="frm">
        <fieldset>
            <legend>로그인</legend>
            <div>
                <label for="id">아이디</label><input type="text" id="id">
            </div>
            <p class="msg1">아이디를 입력하세요</p>
            <div>
                <label for="pw">비밀번호</label><input type="password" id="pw">
            </div>
            <p class="msg2">비밀번호를 입력하세요</p>
            <button>전송</button>
        </fieldset>
    </form>
</body>
</html>

0개의 댓글