Event onfocus ทริกเกอร์เมื่อ Element ได้รับ Focus — ไม่ Bubble (ต่างจาก focusin)
ตัวอย่างโค้ด
<!DOCTYPE html>
<html>
<body>
<p>Write below:</p>
<input type="text" onfocus="newFunc(this)">
<script>
function newFunc(x) {
x.style.background = "blue";
}
</script>
</body>
</html>
คำอธิบาย
- ทริกเกอร์: Click, Tab,
element.focus(), Autofocus - ไม่ Bubble → ไม่จับได้ที่ Parent ด้วย Event Delegation (ต้องใช้
focusinแทน) - คู่กับ
onblur(Focus Lost)
Focus Event Types
| Event | Bubbles | Phase | ทริกเกอร์ |
|---|---|---|---|
focus | ❌ | Target | Element ได้ Focus |
focusin | ✅ | Capture/Bubble | Element ได้ Focus (Delegation OK) |
blur | ❌ | Target | Element สูญเสีย Focus |
focusout | ✅ | Capture/Bubble | Element สูญเสีย Focus (Delegation OK) |
การใช้งานจริง
- Highlight Field:
input.addEventListener('focus', () => input.style.borderColor = 'blue') - Show Tooltip/Help: แสดง Hint เมื่อ Focus
- Select All Text:
input.addEventListener('focus', () => input.select()) - Track Focus State: สำหรับ Accessibility (ARIA)
รูปแบบมาตรฐาน
const input = document.querySelector('input');
input.addEventListener('focus', () => {
input.style.outline = '2px solid #0066cc';
});
input.addEventListener('blur', () => {
input.style.outline = 'none';
});