2012-05-16 36 views
6

Tôi đang sử dụng các sự kiện này để thử đánh giá đầu vào biểu mẫu, nhưng nếu biểu mẫu được trình duyệt tự động điền thì các sự kiện này không kích hoạt. Làm cách nào để tôi có thể kích hoạt sự kiện tự động điền?Jquery .keyup .keydown .keypress không phát hiện tự động điền của trình duyệt

+0

Tôi đã nghiên cứu điều này một lúc trước và tôi không tin rằng bạn có thể, không có sự kiện nào cho tự động điền trình duyệt. Sẽ được quan tâm trong bất kỳ câu trả lời mặc dù :) –

+0

Nếu không biết chính xác những gì bạn đang làm, bạn có thể thêm một xử lý sự kiện '.change()' là tốt? Tôi thành thật thậm chí không chắc chắn nếu sự kiện đó thậm chí cháy với tự động điền trình duyệt. – jaredhoyt

+0

Tôi sẽ thử '.change()' như Jared đề nghị, nhưng nếu điều đó không hoạt động, bạn có thể phải sử dụng '.blur()'. – nnnnnn

Trả lời

2

Rất tiếc, không có cách nào để phát hiện tự động điền trình duyệt. Thay vào đó, hãy sử dụng setInterval, ví dụ: để chạy hàm ở tần suất khá cao để kiểm tra xem giá trị ban đầu (hoặc trống) có khớp với giá trị đầu vào hay không và kích hoạt phản hồi theo cách đó. Nếu bạn không muốn làm điều đó, bạn có thể SOL vì trình duyệt thậm chí sẽ không kích hoạt .change và mọi sự kiện có nhiều khả năng không tuân thủ trình duyệt chéo.

Bạn cũng có thể có các sự kiện xác thực chạy trên quá trình gửi biểu mẫu, điều này cũng sẽ hiệu quả.

+0

yea vấn đề với kỹ thuật gửi là tôi đang thay đổi màu của đường viền đầu vào dựa trên việc xác nhận nội dung vì vậy tôi cần sự kiện kích hoạt mỗi khi nó được thay đổi –

0

Bạn có thể giả mạo hành vi mong muốn một chút bằng cách liên kết với các sự kiện .click() và/hoặc .dblclick().

Nó không được đảm bảo, nhưng bạn có thể nhấp chuột bổ sung nếu họ quyết định "chấp thuận" tự động điền bằng cách chọn nó từ hộp.

2

Tôi biết đó là câu hỏi khá cũ, nhưng tôi đã giải quyết vấn đề tương tự bằng cách sử dụng hàm e.preventDefault() sau hàm keyup.

$("#email").keyup(function (e) { 
     e.preventDefault(); 

Bằng cách này, nếu bạn chọn nhập gợi ý bằng tự động điền trình duyệt, nó sẽ nhận thấy. Vấn đề vẫn còn khi bạn nhấp chuột vào gợi ý, nhưng nó hoạt động tốt nếu bạn nhấn phím bất kỳ sau khi chọn nó.

GIẢI PHÁP CUỐI CÙNG

tôi thấy bài này trên stackoverflow: https://stackoverflow.com/a/24746108/3481005

và sử dụng .Trên ("đầu vào") hiện các trick!

$("#email").on("input",function (e) { 
Các vấn đề liên quan