Câu trả lời:
Sự onBlurkiện được kích hoạt khi bạn rời khỏi một đối tượng mà không nhất thiết phải thay đổi giá trị của nó.
Sự onChangekiện chỉ được gọi khi bạn đã thay đổi giá trị của trường và nó mất tiêu điểm.
Bạn có thể muốn xem phần giới thiệu của quirksmode về các sự kiện . Đây là một nơi tuyệt vời để nhận thông tin về những gì đang diễn ra trong trình duyệt của bạn khi bạn tương tác với nó. Sách của anh ấy cũng hay.
onblur kích hoạt khi một trường mất tiêu điểm, trong khi onchange kích hoạt khi giá trị của trường đó thay đổi. Tuy nhiên, những sự kiện này sẽ không luôn xảy ra theo cùng một thứ tự.
Trong Firefox, tab ra khỏi một trường đã thay đổi sẽ kích hoạt thay đổi sau đó bật lên, và nó thường làm như vậy trong IE. Tuy nhiên, nếu bạn nhấn phím enter thay vì tab, trong Firefox, nó sẽ kích hoạt onblur rồi onchange, trong khi IE thường sẽ kích hoạt theo thứ tự ban đầu. Tuy nhiên, tôi đã từng gặp trường hợp IE cũng sẽ làm mờ trước, vì vậy hãy cẩn thận. Bạn không thể cho rằng sự thay đổi hoặc sự thay đổi sẽ xảy ra trước cái kia.
Một ví dụ để làm cho mọi thứ trở nên cụ thể. Nếu bạn có một lựa chọn như vậy:
<select onchange="" onblur="">
<option>....
</select>
các onblur()được gọi khi bạn điều hướng đi. Các onchange()được gọi khi bạn chọn một tùy chọn khác nhau từ sự chọn lựa - tức là bạn thay đổi những gì nó đang được chọn như.
number, nhấp vào mũi tên lên / xuống sẽ kích hoạt sự kiện thay đổi (nhưng không phải sự kiện mờ), trong khi việc nhập chỉ gây ra sự kiện thay đổi khi trường mất tiêu điểm.
Trong Firefox, onchange chỉ kích hoạt khi bạn nhấn tab hoặc nhấp vào bên ngoài trường nhập. Điều này cũng đúng với Onblur. Sự khác biệt là onblur sẽ kích hoạt cho dù bạn đã thay đổi bất cứ điều gì trong lĩnh vực này hay không. Có thể ENTER sẽ kích hoạt một hoặc cả hai điều này, nhưng bạn sẽ không biết điều đó nếu bạn tắt ENTER trong biểu mẫu của mình để ngăn các lần gửi bất ngờ.
onBlur là khi sự tập trung của bạn không còn vào lĩnh vực được đề cập.
Thuộc tính onblur trả về mã trình xử lý sự kiện onBlur, nếu có, tồn tại trên phần tử hiện tại.
onChange là khi giá trị của trường thay đổi.
Tôi nghĩ điều quan trọng cần lưu ý ở đây là onBlur () kích hoạt bất kể.
Đây là một chủ đề hữu ích nhưng điều duy nhất mà nó không làm rõ là onBlur () sẽ kích hoạt mỗi lần.
onChange () sẽ chỉ kích hoạt khi giá trị được thay đổi.
onChange là khi một cái gì đó trong một trường thay đổi, ví dụ, bạn viết một cái gì đó trong một đầu vào văn bản.
onBlur là khi bạn rời khỏi một trường, ví dụ, bạn đang viết trong một đầu vào văn bản và bạn đã bấm tắt nó.
Vì vậy, thực sự chúng gần như giống nhau nhưng để onChange hoạt động như cách onBlur thực hiện một cái gì đó trong đầu vào đó cần phải thay đổi.