본문 바로가기

Frontend/jQuery

JS jQuery (part. 31) - 입력 양식 이벤트

입력 양식 이벤트 종류

  • change : 입력 양식의 내용을 변경할 때 발생
  • focus : 입력 양식에 초점을 맞추면 발생
  • focusin : 입력 양식에 초점이 맞추어지기 바로 전에 발생
  • focusout : 입력 양식에 초점이 사라지기 바로 전에 발생
  • blur : 입력 양식에 초점이 사라지면 발생
  • select : 입력 양식을 선택할 때 발생 (input[type="text"] 태그 및 textarea 태그 제외)
  • submit : submit 버튼을 누르면 발생
  • reset : reset 버튼을 누르면 발생

submit 이벤트

<body>
    <form id="my-form">
        <table>
            <tr>
                <td>이름 : </td>
                <td><input type="text" name="name" id="name"></td>
            </tr>
            <tr>
                <td>비밀번호 : </td>
                <td><input type="password" name="password" id="password"></td>
            </tr>
        </table>
        <input type="submit" value="제출">
    </form>
</body>

 

submit 이벤트는 form 태그에서 발생하는 이벤트이다 따라서 form 객체에 submit( ) 메서드를 연결한다

입력 양식의 유효성 검사를 할 때는 기본 이벤트를 제거해야 한다

 

$(function () {
  $('#my-form').submit(function (event) {
    var name = $('#name').val();
    var password = $('#password').val();

    alert(name + " : " + password);

    event.preventDefault();
  })
});

 


checkbox 이벤트

type 속성이 checkbox와 radio인 input 태그의 상태를 변경하는 이벤트는 click 이벤트가 아니라 change 이벤트이다

 

<body>
    <input type="checkbox" id="all-check" />
    <label>All</label>
    <div id="check-item">
        <input type="checkbox" />
        <label>A Option</label>
        <input type="checkbox" />
        <label>B Option</label>
        <input type="checkbox" />
        <label>C Option</label>
    </div>
</body>

 

$(function () {
  $('#all-check').change(function () {
    if (this.checked) {
   	 $('#check-item').children().prop('checked', true);
    } else {
  	 $('#check-item').children().prop('checked', false);
    }
  })
});

 

체크 상태를 확인할 때는 입력 객체의 checked 속성을 확인하고 체크 상태를 바꿀 때는 prop( ) 메서드를 사용한다

prop( ) 메서드는 이 경우에만 사용하므로 간단하게 짚고 넘어가자

 


화살표 함수와 jQuery 이벤트

function( ) { } 형태로 생성한 함수와 ( ) => { } 형태로 생성한 함수는 this 사용할 때만 주의하면 된다

이벤트를 연결할 때 이벤트 내부에서 this 키워드를 많이 사용하므로 단순하게 ( ) => { } 형태로 변경하면 문제가 발생한다 

 

$('h1').click(() => {
	$(this).css('color', 'red');
})

 

위처럼 코드를 쓰면 의도한대로 동작하지 않는다

this가 window 객체를 나타내기 때문

 

$('h1').click((event) => {
	$(event.currentTarget).css('color', 'red');
})

 

화살표 함수를 이용할 때는 이벤트 객체의 currentTarget 속성을 사용해야 한다