12주차 - jsp&js (27) onkeyup, <input type="button>

2022. 9. 21. 18:08jsp/java script

이번의 목표

01.  onkeyup에 대해 알아보자

02. onkeyup, onkeydown, onkeypress 의 차이를 알아보자.

03. input type="button" 의 사용을 알아보자.


onkeyup키보드를 누르고 놓았을 때 작동하는 이벤트 입니다.

비슷한 기능으로는 onkeypress, onkeydown 가 있습니다.

이 셋의 차이점으로는

onkeyup : 키를 눌렀다 놓았을 때 작동합니다.

onkeydown : 키를 눌렀을 때 작동합니다.

onkeypress : onkeydown과 기능적으로는 동일합니다.

                     하지만 backspace, enter, tab, shift, ctrl, 한/영 키 등을 인식하지 못합니다.

 

그리고 다음으로 알아볼 것은 <input type="button"> 입니다.

보통 데이터를 전송할 때에는 <button> 또는 <input type="submit">이 주로 사용됩니다.

여기서 <button>은 문제가 되지 않지만, <input type="submit">이 문제가 되는 부분이 있습니다.

<input type="submit">은 데이터를 전송하기 전에 데이터의 검증을 할 수가 없습니다.

때문에 데이터를 전송하기 전에 검증을 해야하는 상황에는 <button>이나 <input type="button">을 사용해야합니다.

01. 코드
02. 실행 화면

01. 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ex27</title>
<script type="text/javascript">
	function checkId(obj) {
		if (obj.value == '' || obj.value == null) {
			alert("아이디는 필수항목 입니다.")
		}
	}
	function checkPw1(obj) {
		pwholder = document.getElementById('pwholder1');
		if (obj.value.length == 0) {
			pwholder.innerHTML = "비밀번호를 입력하세요";
		} else if (obj.value.length < 5) {
			pwholder.innerHTML = "비밀번호는 5글자 이상이어야합니다."
		} else if (obj.value.length >= 5) {
			pwholder.innerHTML = "잘 입력 되었습니다."
		}
	}
	function checkPw2(obj) {
		pwholder = document.getElementById('pwholder2');
		if (obj.value.length == 0) {
			pwholder.innerHTML = "비밀번호를 입력하세요";
		} else if (obj.value.length < 5) {
			pwholder.innerHTML = "비밀번호는 5글자 이상이어야합니다."
		} else if (obj.value.length >= 5) {
			pwholder.innerHTML = "잘 입력 되었습니다."
		}
	}
	function checkPw3(obj) {
		pwholder = document.getElementById('pwholder3');
		if (obj.value.length == 0) {
			pwholder.innerHTML = "비밀번호를 입력하세요";
		} else if (obj.value.length < 5) {
			pwholder.innerHTML = "비밀번호는 5글자 이상이어야합니다."
		} else if (obj.value.length >= 5) {
			pwholder.innerHTML = "잘 입력 되었습니다."
		}
	}
</script>
</head>
<body>
	<!-- 아이디 없으면 필수정보라고 alert 사용
	처음에 비밀번호 옆에 (*필수항목) 출력
	5글자 아래로는 비밀번호 5자 이상이라 출력
	5글자 넘으면 잘 입력 되었다고 출력
	비밀번호 다 지우면 비밀번호 입력 출력
	 -->
	 
	<fieldset>
		<legend>onkeypress 사용했을때</legend>
		<label>아이디</label> <input type="text" id="id" onBlur="checkId(this)">
		<br> <label>비밀번호</label>
		<input type="password" id="pw" onkeypress="checkPw1(this)"> <label
			id="pwholder1">*필수항목</label> <br>
	</fieldset>
	<br>
	<fieldset>
		<legend>onkeyup 사용했을때</legend>
		<label>아이디</label> <input type="text" id="id" onBlur="checkId(this)">
		<br> <label>비밀번호</label>
		<input type="password" id="pw" onkeyup="checkPw2(this)"> <label
			id="pwholder2">*필수항목</label> <br>
	</fieldset>
	<br>
	<fieldset>
		<legend>onkeydown 사용했을때</legend>
		<label>아이디</label> <input type="text" id="id" onBlur="checkId(this)">
		<br> <label>비밀번호</label>
		<input type="password" id="pw" onkeydown="checkPw3(this)"> <label
			id="pwholder3">*필수항목</label> <br>
	</fieldset>

	<!-- 
	submit을 사용하면 데이터의 검증을 하고 전송할 수가 없다.
	그렇기 때문에 button태그를 사용하거나 type="button"을 사용하여 데이터를 검증해줘야한다. 
	-->
	<input type="button" id="login" value="로그인" onclick="login()">
	<input type="button" id="cancel" value="취소" onclick="cancel()">
</body>
</html>

02. 실행 화면

See the Pen Untitled by woojw6012 (@SpookeyTed) on CodePen.

① onkeypress 일때는 키를 누를때 이벤트가 작동하지만 백스페이스 등의 키는 인식하지 않는 것을 확인할 수 있습니다.

② onkeyup 일때는 키를 눌렀다 놓을때 이벤트가 작동하는 것을 확인할 수 있습니다.

③ onkeydown 에서는 키를 누를때 이벤트가 작동하는  것을 확인할 수 있습니다.