2011-02-08 38 views

Trả lời

7

Một giải pháp tôi thỉnh thoảng sử dụng là kiểm tra xem giá trị của trường/đầu vào/lựa chọn có khác với giá trị mặc định của nó hay không. defaultValue sẽ là giá trị ban đầu trong đánh dấu và giá trị là giá trị hiện tại được gọi là giá trị được chọn hoặc đã nhập. Điều này có thể khác nhau mặc dù biểu mẫu đã được tự động điền.

Nếu bạn muốn tắt tự động điền hoàn toàn, có thể là khôn ngoan khi thêm tự động điền = "tắt" trên các trường được kết nối trực tiếp với logic của bạn.

+0

Tôi cũng đã thử một giải pháp tương tự, nhưng vấn đề là tôi đặt văn bản thành "" và sau đó tự động hoàn thành bằng chrome sẽ đặt thông tin đăng nhập của tôi lại ở đó ... – Revious

+0

Chrome hiện ghi đè tự động hoàn tất và quyết định UX tốt hơn là chỉ tự động hoàn tất mọi thứ: - \ – webdevinci

0

Bạn đã thử dùng onpropertychanged thay vì sự kiện onchange chưa? Đó là cho IE chỉ mặc dù và là sửa chữa được đề nghị trên MSDN.

+0

Tôi sẽ, nhưng là một trang web xem bởi hàng trăm ngàn người trên mỗi trình duyệt có thể tưởng tượng, tôi không nghĩ rằng sẽ làm việc rất tốt. –

+0

Điều này có vẻ tương tự: http://stackoverflow.com/questions/343192/why-does-the-javascript-onchange-event-not-fire-if-autocomplete-is-on – Satyajit

-2

Dưới đây là một giải pháp khá tốt mà làm điều gì đó tương tự như những gì Jishi mô tả:

https://web.archive.org/web/20131125153914/http://furrybrains.com/2009/01/02/capturing-autofill-as-a-change-event/

Cập nhật các liên kết bị hỏng với Máy liên kết Wayback

+8

Liên kết bị hỏng – Revious

+0

Liên kết Wayback Machine https://web.archive.org/web/20131125153914/http://furrybrains.com/2009/01/02/capturing-autofill-as-a-change-event/ – RSK

0

Chỉ trong trường hợp ai đó đang vẫn đang tìm kiếm một giải pháp (giống như tôi đã có ngày hôm nay), để nghe một thay đổi tự động điền của trình duyệt, đây là phương pháp jquery tùy chỉnh mà tôi đã tạo, chỉ để đơn giản hóa quá trình xử lý khi thêm trình xử lý thay đổi vào đầu vào:

$.fn.allchange = function (callback) { 
     var me = this; 
     var last = ""; 
     var infunc = function() { 
      var text = $(me).val(); 
      if (text != last) { 
       last = text; 
       callback(); 
      } 
      setTimeout(infunc, 100); 
     } 
     setTimeout(infunc, 100); 
    }; 

Bạn có thể gọi nó như thế này:

$("#myInput").allchange(function() { 
    alert("change!"); 
}); 
+0

Trong khi giải pháp này sẽ hoạt động, nó đắt tiền trên các chu kỳ CPU. [This] (http://stackoverflow.com/a/8548572/1057527) là một giải pháp tốt hơn. – machineaddict

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