Tôi muốn thêm một câu trả lời "muộn", bởi vì tôi đã vật lộn với change
, keyup
và search
hôm nay, và có lẽ những gì tôi tìm thấy cuối cùng cũng có thể hữu ích cho những người khác. Về cơ bản, tôi có bảng điều khiển theo kiểu tìm kiếm và tôi chỉ muốn phản ứng đúng với báo chí của X nhỏ (trong Chrome và Opera, FF không triển khai bảng này) và kết quả là xóa một khung nội dung.
Tôi đã có mã này:
$(some-input).keyup(function() {
// update panel
}
$(some-input).change(function() {
// update panel
}
$(some-input).on("search", function() {
// update panel
}
(Chúng riêng biệt vì tôi muốn kiểm tra khi nào và trong trường hợp nào được gọi là).
Hóa ra Chrome và Firefox phản ứng khác nhau. Cụ thể, Firefox coi change
"mọi thay đổi đối với đầu vào", trong khi Chrome coi đó là "khi mất tiêu điểm VÀ nội dung bị thay đổi". Vì vậy, trên Chrome, chức năng "bảng cập nhật" đã được gọi một lần, trên FF hai lần cho mỗi lần nhấn phím (một trong keyup
, một trong change
)
Ngoài ra, xóa trường bằng X nhỏ (không có trong FF) đã kích hoạt search
sự kiện trong Chrome: không keyup
, không change
.
Kết luận? Sử dụng input
thay thế:
$(some-input).on("input", function() {
// update panel
}
Nó hoạt động với cùng một hành vi trong tất cả các trình duyệt tôi đã kiểm tra, phản ứng ở mọi thay đổi trong nội dung đầu vào (sao chép-dán bằng chuột, tự động hoàn thành và "X" đi kèm).
onchange
sự kiện sao?