๐ HTML ํฌ์ปค์ค ์ ์ดํ๊ธฐ - focus, blur
HTML ํฌ์ปค์ค ์ ์ด
์ฌ์ง์ด๋ ์ด๋ฏธ์ง์ ๊ฐ์ ์์ ์ ๋ค๋ค๋ณด์ ๋ ์ ๋ถ์ ์๋ง focus์ blur ์ฒ๋ฆฌ์ ๋ํด ๋ค์ด๋ณธ ์ ์ด ์์ ๊ฒ์ด๋ค. ์ฌ์ง์ ๋ธ๋ฌ ์ฒ๋ฆฌ๋ฅผ ํ๋ฉด ์ด๋ฏธ์ง๊ฐ ํ๋ ค์ง๊ณ ํฌ์ปค์ค ์ฒ๋ฆฌํ๋ฉด ํ๋ฆฐ๊ฒ ์๋๋๋ก ๋๋์์จ๋ค.
HTML ํฌ์ปค์ค๋ ์ด๋ฌํ ๊ฐ๋
์ ์๋ฆฌ๋จผํธ์ ๊ฐ์ ธ์จ ๊ฒ์ผ๋ก ๋ณด๋ฉด ๋๋ค. HTML์์ <button>, <input>, <select>, <a> ์ ๊ฐ์ ์๋ฆฌ๋จผํธ์ focus ๋ฅผ ๋ถ์ฌํ๋ฉด ํด๋น ์์์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ ์ค๋น๊ฐ ๋์๋ค๋ฅผ ์๋ฏธํ๋ค. blur๋ ๋ฐ๋๋ก ํฌ์ปค์ค๋ฅผ ์์ ์๊ฐ์ ์ด์ผ๊ธฐ ํ๋๋ฐ, ์
๋ ฅ๋์์ ๋์ด์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ ์ ์๋ ์ํ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
focus / blur ์ด๋ฒคํธ
focus ์ด๋ฒคํธ๋ ์์๊ฐ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ๋, blur ์ด๋ฒคํธ๋ ํฌ์ปค์ค๋ฅผ ์์ ๋ ๋ฐ์ํ๋ค.
- onfocus : ์ ๋ ฅ์ฐฝ์ด ํฌ์ปค์ค ๋ฐ์ ๊ฒฝ์ฐ ์๋
- onblur : ์ ๋ ฅ์ฐฝ ํฌ์ปค์ค๋ฅผ ์์ผ๋ฉด ์๋
// ์์๊ฐ ํฌ์ปค๋ ๋๋ฉด ์ด๋ฒคํธ ๋ฐ์
document.getElementById("fname").addEventListener("focus", () => {
document.getElementById("fname").style.backgroundColor = "red";
});
// ์์๊ฐ ๋ธ๋ฌ ๋๋ฉด ์ด๋ฒคํธ ๋ฐ์
document.getElementById("fname").addEventListener("blur", () => {
alert("Input field lost focus.");
document.getElementById("fname").style.backgroundColor = "white";
});
See the Pen focus, blur - 1 by barzz12 (@inpaSkyrim) on CodePen.
๊ทธ๋ฐ๋ฐ ์ผ๋ฐ focus์ blur ์ด๋ฒคํธ๋ ๋ฒ๋ธ๋ง ๋์ง ์๋๋ค๋ ํน์ง์ด ์๋ค. ๋ฐ๋ผ์ ๋ง์ผ ์ด๋ฒคํธ ์์ ๊ธฐ๋ฅ์ ์ด์ฉํ๊ณ ์ถ๋ค๋ฉด ์บก์ฒ๋ง(capture)์ ์ด์ฉํ๊ฑฐ๋ ๋ณ๋์ ํฌ์ปค์ค ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉ ํ์ฌ์ผ ํ๋ค.
focusin / focusout ์ด๋ฒคํธ
focusin๊ณผ focusout ์ด๋ฒคํธ๋ focus, blur์ ๊ธฐ๋ฅ์ ๋น์ทํ์ง๋ง ๋ฒ๋ธ๋ง์ด ๋๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์๋ค.
๋ณด๋ค ๋ช ํํ ํ์๋ฉด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์์์ ํฌ์ปค์ค๋ฅผ ์ค ๊ฒฝ์ฐ focusin ๋ณด๋ค focus ์ด๋ฒคํธ๊ฐ ๋จผ์ ๋ฐ์๋๋ค. ๋ค๋ง ์ด ๋ ์ด๋ฒคํธ๋ ์๋ก ๋งค์ฐ ๊ฐ๊น๊ฒ ๋ฐ์ํ๋ฏ๋ก ๋์์ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํด๋ ์๊ด์๋ค.
์๋ ์์ ๋ฅผ ์ดํด๋ณด๋ฉด, input ์์๋ฅผ ํด๋ฆญํ๋ฉด ์ด๋ฒคํธ๊ฐ ์ ํ๋์ด form ํ๊ทธ์ focusin, focusout ์ด๋ฒคํธ ์ฝ๋ฐฑ ํจ์ focusinHandler() ๊ฐ ๋ฐ์๋จ์ ํ์ธ ํ ์ ์๋ค.
<form onfocusin="focusinHandler(event)" onfocusout="focusoutHandler(event)">
User Name <input type="text" name="username" />
<br><br>
Email <input type="text" name="email" />
</form>
See the Pen focus, blur - 2 by barzz12 (@inpaSkyrim) on CodePen.
focus / blur ๋ฉ์๋
์ฌ์ฉ์์ ์ํธ์์ฉ์ ํตํด ํฌ์ปค์ค ์ด๋ฒคํธ๋ฅผ ๋ฐ์์์ผ ์ฒ๋ฆฌ๋ฅผ ํ ์๋ ์์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ์๋๋ก ์ผ๋ถ๋ฌ ํฌ์ปค์ฑ์ ํ๋๋ก ์กฐ์ํ ์๋ ์๋ค.
focus(): ํด๋น ์์์ ํฌ์ปค์ค๋ฅผ ๋ถ์ฌblur(): ํด๋น ์์์ ํฌ์ปค์ค๋ฅผ ์์
๋ค์ ์์ ๋ ์ํฐ๋ฅผ ๋๋ฅด๋ฉด focus() ๋ฉ์๋๊ฐ ์คํ๋์ด ๋ฐ๋ก ๋ค์ ์ ๋ ฅ์ฐฝ ์์๋ก ํฌ์ปค์ฑํ์ฌ์ ์ฐ๋ฌ์ ๋ฐ๋ก๋ฐ๋ก ์ ๋ ฅํ ์ ์๊ฒ ํ๋ ์์ฉ๋ฒ์ด๋ค.
<FORM>
[๊ฐ์ธ์ ๋ณด ์
๋ ฅ]<br>
์ด๋ฆ : <INPUT id=pname type=text size=10 onkeydown='moveFocus("age")'><br>
๋์ด : <INPUT id=age type=text size=10 onkeydown='moveFocus("sex")'><br>
์ฑ๋ณ : <INPUT id=sex type=text size=10 onkeydown='moveFocus("confirm")'>
</FORM>
<script>
function moveFocus(next) {
if (event.keyCode == 13) { //์ํฐ๋๋ฅผ๊ฒฝ์ฐ
document.getElementById(next).focus();//์๊ท๋จผํธid ๋
ธ๋๋ก ์ด๋ํด์ focusํ๋ค
}
}
</script>
See the Pen focus, blur - 0 by barzz12 (@inpaSkyrim) on CodePen.
ํ์ฌ ํฌ์ปค์ค๋ ์์ ํ์ธ
ํ์ฌ ํฌ์ปค์ค๋ ์์๋ document.activeElement๋ฅผ ํตํด ํ์ธํ ์ ์๋ค.
<textarea id='textarea1'>textarea1</textarea>
<textarea id='textarea2'>textarea2</textarea>
<script>
document.addEventListener("mouseup", (showSelected) => {
alert(`${document.activeElement.id} ํด๋ฆญ !!`);
});
</script>
See the Pen focus, blur - 5 by barzz12 (@inpaSkyrim) on CodePen.
์๋ ํฌ์ปค์ค
autofocus๋ผ๋ HTML ์์ฑ์ ์์์ ๋ถ์ฌํ๋ฉด ํ์ด์ง๊ฐ ๋ก๋๋ ํ ์๋์ผ๋ก ํฌ์ปค์ฑ ๋๋ค.
<form action="/examples/media/action_target.php" method="get">
์ด๋ฆ : <input type="text" name="st_name"><br>
ํ๋ฒ : <input type="text" name="st_id" autofocus><br> <!-- ํ์ด์ง๊ฐ ๋ก๋๋ ๋ ์๋์ผ๋ก ํฌ์ปค์ค -->
ํ๊ณผ : <input type="text" name="department"><br>
<input type="submit">
</form>
๋ชจ๋ HTML ์์ ํฌ์ปค์ค ์ง์
<button>, <input>, <select>, <a> ์ ๊ฐ์ ํน๋ณํ ์์ ์ธ์ ๋๋ถ๋ถ์ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌ์ปค์ค๋ฅผ ์ง์ํ์ง ์๋๋ค. ๊ทธ๋์ ๋ง์ผ <div> ๋ <span> ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์์์๋ ํฌ์ปค์ค ๊ธฐ๋ฅ์ ์ฌ์ฉ์ถ๋ค๋ฉด tabindex ์์ฑ์ ๋ถ์ฌํ๋ฉด ๋๋ค.
tabindex ์์ฑ
tabindex ์์ฑ์ด ์๋ ์์๋ ์ข ๋ฅ์ ์๊ด์์ด ํฌ์ปค์ค๊ฐ ๊ฐ๋ฅํด์ง๋ค. tabindex ์์ฑ ๊ฐ์ ์ซ์ ์ธ๋ฐ, ์ด ์ซ์๋ Tab ํค๋ฅผ ๋๋ฌ ์์ ์ฌ์ด๋ฅผ ์ด๋ํ ๋ ์์ ๋ฒํธ๊ฐ ๋๋ค.
์๋ฅผ๋ค์ด ์์๊ฐ ๋ ๊ฐ ์์๋ ์ฒซ ๋ฒ์งธ ์์์ tabindex์ 1์, ๋ ๋ฒ์งธ ์์์ tabindex์ 2๋ฅผ ํ ๋นํ๋ฉด ์ฒซ ๋ฒ์งธ ์์๊ฐ ํฌ์ปค์ฑ๋์ด์๋ ์ํ์์ Tab์ ๋๋ ์ ๋ ๋ ๋ฒ์งธ ์์๋ก ํฌ์ปค์ค๊ฐ ์ด๋๋๊ฒ ๋๋ค.
<div tabindex="1">์ฒซ๋ฒ์งธ ํฌ์ปค์ค</div>
<div tabindex="2">๋๋ฒ์งธ ํฌ์ปค์ค</div>
<div tabindex="3">์ธ๋ฒ์งธ ํฌ์ปค์ค</div>
tabindex ๊ท์น
tabindex์ ์์ฑ ๊ฐ์ ๋ฐ๋ผ ํฌ์ปค์ฑ ์์๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ค. ๊ท์น์ด ์กฐ๊ธ ๋ํดํ ํธ์ด๋ค.
- tabindex๊ฐ ์๋ ์์ : ๋ฌธ์ ๋ด ์์์ ๋ฐ๋ผ ํฌ์ปค์ค๊ฐ ์ด๋ (๊ธฐ๋ณธ ์์)
- tabindex๊ฐ 0์ธ ์์ : ์ด ์์๋ tabindex ์์ฑ์ด ์๋๊ฒ์ฒ๋ผ ๋์. ๋ฐ๋ผ์ ํฌ์ปค์ค๋ฅผ ์ด๋์ํฌ ๋ tabindex๊ฐ 0์ธ ์์๋ tabindex๊ฐ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์๋ณด๋ค ๋์ค์ ํฌ์ปค์ค๋ฅผ ๋ฐ๊ฒ ๋๋ค.
- tabindex๊ฐ -1์ธ ์์ : ์ค๋ก์ง
focus()๋ฉ์๋๋ฅผ ํตํด ์คํฌ๋ฆฝํธ๋ก๋ง ํฌ์ปค์ค ํ๊ณ ์ถ์ ์์์ ์ฌ์ฉ
<div tabindex="1">์ฒซ๋ฒ์งธ ํฌ์ปค์ค</div>
<div tabindex="0">์ธ๋ฒ์งธ ํฌ์ปค์ค</div>
<div tabindex="2">๋๋ฒ์งธ ํฌ์ปค์ค</div>
<div tabindex="-1">ํฌ์ปค์ค ์๋จ</div>
See the Pen focus, blur - 3 by barzz12 (@inpaSkyrim) on CodePen.
# ์ฐธ๊ณ ์๋ฃ
https://www.geeksforgeeks.org/html-dom-onblur-event/
https://o7planning.org/12309/javascript-focusevent
https://ko.javascript.info/focus-blur