Tôi bắt dán các sự kiện với $('selector').on('input', function(event) { ... });
jQuery sử dụng event.preventDefault() với trên ('đầu vào')
Sau đó, tôi đang cố gắng để kiểm tra những gì đang được dán và nếu nó không vượt qua xác nhận, hủy bỏ dán với event.preventDefault()
. Thật không may, khi chức năng nghe được thực thi, văn bản đã được dán và event.preventDefault()
không làm gì cả.
Vì vậy, cách tốt nhất để bắt sự kiện dán là gì và nếu nội dung nào được dán không xác thực, hãy hoàn tác/ngăn việc dán?
Tôi biết tôi có thể sử dụng .on('paste', function(event) { ... })
, nhưng điều đó không cho tôi văn bản được dán hoặc nội dung của yếu tố đầu vào sau khi dán, trừ khi tôi sử dụng setTimeout()
với thời gian chờ đợi một chút và tôi muốn tránh sử dụng setTimeout()
.
Bạn có thể tạo một ví dụ về jsFiddle không? – j08691
'event.preventDefault()' ngăn chặn hành động mặc định, và khi liên kết với sự kiện 'input', nó không thực sự ngăn cản bạn gõ hay dán bất cứ thứ gì vào đầu vào? Khi lưu vào bộ nhớ đệm giá trị từ nội dung được dán, bạn sẽ phải trì hoãn giá trị đó để nhận giá trị, nhưng không phải là "một số phút", đặt thời gian chờ thành 0 và vẫn hoạt động. – adeneo
Tôi đoán sẽ ổn nếu đặt thời gian chờ '100ms' để ghi giá trị của một đầu vào khi dán và xác thực thay vì' phút'. – SRy