Tôi đã thử nghiệm này trên Galaxy SIII và trình duyệt Android dường như không gửi sự kiện paste
. Tuy nhiên, nó vẫn gửi sự kiện input
sau khi một cái gì đó được dán.
Nếu người dùng nhập vào một trường, anh ta sẽ kích hoạt một sự kiện input
cho mỗi chữ cái. Tuy nhiên, nếu anh ấy dán, sự kiện input
sẽ chỉ kích hoạt một lần cho toàn bộ chuỗi đã được dán. Dựa trên quan sát này, chúng tôi có thể chặn dán như sau:
$('#ie').bind("input", function() {
var previousValue = $(this).data('old_value') || '',
newValue = $(this).val();
if((newValue.length - previousValue.length) > 1) {
$(this).val(previousValue);
}
$(this).data('old_value', $(this).val());
});
Bạn sẽ tìm thấy JSFiddle here.
Xin lưu ý rằng điều này cũng sẽ chặn tự động hoàn thành và tất cả các kỹ thuật nhập khác lạ hoạt động theo cách tương tự (tôi không biết về bất kỳ).
Nguồn
2013-08-20 13:33:44
Tôi biết nó không liên quan đến câu hỏi, nhưng tại sao lại vô hiệu hóa dán? –
Vâng, các trường nhập như xác nhận email, xác nhận mật khẩu không được phép dán. – CalebC
Tôi không chắc mình đồng ý với điều đó. Một số thực phẩm cho suy nghĩ: [Ngăn chặn người dùng dán từ bảng tạm vào trường biểu mẫu bắt buộc] (http://ux.stackexchange.com/q/21062/4487), [Tôi có nên cho phép người dùng sao chép/dán vào xác nhận không lĩnh vực e-mail cho một hình thức đăng ký?] (http://ux.stackexchange.com/q/1488/4487) –