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
Trả lời
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ả.
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 –
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.
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) {
- 1. jQuery .keypress & .keydown .which
- 2. Kích hoạt một sự kiện keypress/keydown/keyup trong JS/jQuery?
- 3. Tự động điền của trình duyệt
- 4. Bật tự động điền biểu mẫu của trình duyệt
- 5. Tự động điền tự động điền jQuery không giữ lại
- 6. Trình nghe sự kiện 'keydown' của Javascript không hoạt động
- 7. jQuery ngôn ngữ trình duyệt phát hiện
- 8. Phát hiện khi tự động điền đã được lấp đầy
- 9. Phát hiện bộ nhớ cache của trình duyệt theo jQuery
- 10. Tái định vị jQuery UI Tự động điền trên trình duyệt thay đổi kích thước
- 11. trình duyệt phát hiện
- 12. Phát hiện menu ngữ cảnh trong trình duyệt bằng jquery
- 13. catch-all sự kiện keyup/keydown trong khung nội tuyến?
- 14. Phát hiện Trình duyệt iPhone
- 15. jQuery: phát hiện một trình duyệt thay đổi kích thước
- 16. Các sự kiện kích hoạt Tự động điền và Javascript của Trình duyệt
- 17. jQuery: keyPress Backspace sẽ không kích hoạt?
- 18. jquery - phát hiện xem đáy của div có chạm vào đáy cửa sổ trình duyệt không?
- 19. Thực hiện Tự động điền trong iOS
- 20. Điền tiến trình thanh - Thực hiện jQuery
- 21. Có cách nào để ngăn tự động điền trình duyệt vào hộp nhập liệu không?
- 22. Trình phát hiện nút bấm của trình duyệt JavaScript hoặc jQuery
- 23. phát hiện thiết bị trình duyệt di động trong .NET
- 24. Jquery vô hiệu hóa tự động điền vào
- 25. Vấn đề jQuery $ (tài liệu) .keydown()
- 26. Chrome - Phát hiện khi trình duyệt thoát
- 27. Ngăn các trình duyệt tự động điền các trường biểu mẫu
- 28. Proxy tự động phát hiện - JavaFX - webview
- 29. jQuery .keyup() không làm việc
- 30. Phát hiện JavaScript/Thống kê trình duyệt
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ù :) –
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
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