2008-12-11 36 views
12

Nếu tôi làm jQuery (expr) .change (chức năng), thì tôi có thể nhận được một chức năng sự kiện để kích hoạt khi người dùng thay đổi giá trị.JQuery phát hiện sự kiện thay đổi lập trình

Có thể thực hiện điều này nếu nó thay đổi theo chương trình, tức là nếu tôi gọi jQuery (expr) .val ("moo").

hoặc nếu một số JavaScript cũ thuần tuý thay đổi giá trị của nó?

Cảm ơn bạn đã được trợ giúp.

Trả lời

15

Sau khi bạn đã thay đổi giá trị, bạn có thể tự mình kích hoạt sự kiện và do đó, hãy gọi tất cả các trình xử lý 'onchange'.

jQuery('#element').change(); 
+0

Hoàn hảo! Chính xác những gì tôi đang tìm kiếm. – neminem

5

Thay đổi giá trị trực tiếp trong JS không đưa vào bất kỳ thứ gì mà jQuery có thể lắng nghe để kích hoạt sự kiện thay đổi. Giống như Sander nói, bạn có thể tự mình xử lý sự kiện. Nếu bạn không có quyền kiểm soát mã khác sửa đổi các giá trị này và đó không phải là một lựa chọn, bạn sẽ không may mắn. Lựa chọn duy nhất khác có thể hoạt động sẽ là có một người quan sát xem giá trị trên một khoảng thời gian bằng cách sử dụng setTimeout, điều này thực sự lộn xộn và có lẽ không phải là một ý tưởng tốt.

+0

Tuy nhiên, đây vẫn là tùy chọn duy nhất. Tôi đồng ý nó là lộn xộn, nhưng nó không nên gây ra vấn đề miễn là bạn chọn một khoảng thời gian lớn (500 ms là ok trong kinh nghiệm của tôi). –

1

jQuery v1 + hỗ trợ kích hoạt có lập trình các trình xử lý - Tôi đã sử dụng phương pháp này trái với phương thức .change() vì nó cho phép nhiều trình xử lý khác được kích hoạt nếu cần (ví dụ: một số trình xử lý tùy chỉnh). API Documentation tại: http://api.jquery.com/trigger/

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