2009-04-24 58 views

Trả lời

137

Sự kiện onBlur được kích hoạt khi bạn đã di chuyển ra khỏi một đối tượng mà không nhất thiết phải thay đổi giá trị của đối tượng.

Sự kiện onChange chỉ được gọi khi bạn đã thay đổi giá trị của trường và mất tiêu điểm.

Bạn có thể muốn xem quirksmode's intro to events. Đây là một nơi tuyệt vời để có được thông tin về những gì đang xảy ra trong trình duyệt của bạn khi bạn tương tác với nó. Cuốn sách của ông cũng tốt.

+1

liên kết của bạn về quirksmode không nói về mờ, chỉ là sự kiện cơ bản – stackdave

3

onChange là khi một cái gì đó trong một lĩnh vực 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 lấy nét ra khỏi một ví dụ trường, bạn đang viết bằng kiểu nhập văn bản và bạn đã nhấp vào nó.

Vì vậy, thực sự chúng gần như giống nhau nhưng đối với onChange để hành xử theo cách trênBlur, có gì đó trong đầu vào đó cần phải thay đổi.

4

onBlur là khi tiêu điểm của bạn không còn trên trường được đề cập.

Thuộc tính onblur trả về mã xử lý sự kiện onBlur, nếu có, tồn tại trên phần tử hiện tại.

BậtThay đổi là khi giá trị của trường thay đổi.

9

Ví dụ để làm mọi thứ cụ thể. Nếu bạn có lựa chọn như vậy:

<select onchange="" onblur=""> 
    <option>.... 
</select> 

onblur() được gọi khi bạn điều hướng. onchange() được gọi khi bạn chọn một tùy chọn khác từ lựa chọn - tức là bạn thay đổi tùy chọn hiện được chọn.

+1

Ví dụ khác: trong đầu vào loại 'số', 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 là sự kiện mờ) chỉ gây ra sự kiện thay đổi khi trường mất tiêu điểm. –

17

onblur kích hoạt khi một trường bị mất tiêu điểm, trong khi onchange kích hoạt khi giá trị của trường đó thay đổi. Những sự kiện này sẽ không phải lúc nào cũng xảy ra theo cùng một thứ tự.

Trong Firefox, tabbing ra khỏi một trường thay đổi sẽ kích hoạt onchange sau đó onblur, và nó thường sẽ 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ẽ bật onblur sau đó onchange, trong khi IE thường sẽ cháy theo thứ tự ban đầu. Tuy nhiên, tôi đã nhìn thấy trường hợp IE cũng sẽ làm mờ đầu tiên, vì vậy hãy cẩn thận. Bạn không thể giả định rằng onblur hoặc onchange sẽ xảy ra trước cái kia.

7

Trong Firefox, onchange chỉ kích hoạt khi bạn nhấn tab hoặc người nào khá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ể là ENTER sẽ kích hoạt một hoặc cả hai, nhưng bạn sẽ không biết rằng nếu bạn vô hiệu hóa ENTER trong biểu mẫu của bạn để ngăn chặn các đệ trình không mong muốn.

3

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 chuỗi hữu ích nhưng điều duy nhất 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.

Các vấn đề liên quan