2013-03-03 26 views
8

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().

+0

Bạn có thể tạo một ví dụ về jsFiddle không? – j08691

+0

'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

+0

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

Trả lời

-1

Sự hiểu biết của tôi từ câu hỏi là, chúng tôi không được cho phép bất kỳ dữ liệu nào được dán bên trong hộp văn bản cho đến khi và trừ khi nó vượt qua xác thực cụ thể. Thay vì sử dụng event.preventDefault(), chúng tôi có thể nắm bắt giá trị khi người dùng nhập bất kỳ nội dung nào bằng cách sử dụng trình nghe on('input') và xác thực nó theo điều kiện cụ thể và nếu xác thực không thành công, làm trống giá trị hộp văn bản.

(Đây là cách giải quyết nếu chúng ta vẫn cần phải sử dụng on('input') kiện nghe)

Sample Code (Tôi đang sử dụng console.log() để in giá trị dán):

HTML:

<input type='text' id="selector" /> 

JS:

$(document).ready(function() { 
$('#selector').on('input', function (e){ 
     if(e.target.value !== "myValue"){ 
     $('#selector').val(''); 
    } 
    else{ 
     console.log(e.target.value); 
    } 
}); 
}); 
0

Hãy thử sử dụng .thay đổi sự kiện của jquery.

Đặt giá trị thành trống nếu giá trị không thỏa mãn điều kiện của bạn.

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