Sự kiện oninput kích hoạt ngay lập tức khi giá trị của <input>, <textarea>, <select> thay đổi do người dùng nhập (gõ, dán, xóa, chọn). Khác với onchange (chỉ khi mất focus và giá trị thay đổi).
Ví dụ
<!DOCTYPE html>
<html>
<body>
<p>Viết tên của bạn:</p>
<input type="text" id="myid" oninput="display()">
<p id="test"></p>
<script>
function display() {
var p = document.getElementById("myid").value;
document.getElementById("test").innerHTML = "Câu trả lời: " + p;
}
</script>
</body>
</html>
So sánh oninput vs onchange
| Sự kiện | Kích hoạt khi | Phù hợp cho |
|---|---|---|
| oninput | Mỗi lần giá trị thay đổi (real-time) | Live preview, autocomplete, counter, validation tức thì |
| onchange | Mất focus & giá trị khác lần trước | Submit form, lưu tự động, xác nhận cuối cùng |
Lưu ý
oninputkhông kích hoạt khi thay đổi giá trị bằng JS (el.value = 'x') — phải dispatch event thủ công.- Trên
<select>:onchangephổ biến hơn (chọn xong mới thay đổi). - Dùng
addEventListener('input', ...)thay vì attribute inline.