2012-02-20 34 views
7

Tôi đã bị mắc kẹt trong sự kiện cắt (jquery) trên một hộp văn bản. Những gì tôi muốn là để có được các văn bản trên hộp văn bản trong sự kiện cắt được kích hoạt.Lấy giá trị của một hộp văn bản trong sự kiện cắt

Tôi đã thử truy cập vào dữ liệu mà người dùng đã cắt qua evt.originalEvent.clipboardData.getData ('văn bản') nhưng trả về không xác định.

Mục tiêu của tôi là biết liệu người dùng có cắt tất cả văn bản (hộp văn bản hiện đang trống) hay không.

Cảm ơn trước

Trả lời

0

Hy vọng tôi có bạn ngay:

Trong jQuery bạn có thể sử dụng một cái gì đó như thế này để xem nếu một textbox là trống trên KeyUp mỗi người dùng:

var txt; 
$('#textbox_ID').live('keyup', function() { 
    txt = $(this).val().length; 
    if(txt < 1) { 
     alert("textbox is empty"); 
    } 
}); 

này nên công việc, bởi vì mỗi khi người dùng phát hành một khóa và có hộp văn bản được tập trung, nó sẽ kiểm tra xem nó có trống không.

+0

Hiện tại, tôi đang tìm cách phát hiện xem hộp văn bản có trống không trong sự kiện cắt – ptheofan

+0

Không thể lấy dữ liệu khay nhớ tạm trong mọi trình duyệt do lý do bảo mật. Tại sao bạn muốn kiểm tra hộp văn bản * trong * sự kiện cắt? Bạn đã đề cập mục tiêu của mình là biết liệu người dùng có cắt tất cả văn bản hay không, vì vậy nó sẽ trống * sau * sự kiện cắt? – Fabian

+0

Có một số câu hỏi về chủ đề này trên SO: http://stackoverflow.com/questions/1144184/js-get-clipboard-data – Fabian

5

Bạn có thể setTimeout với thời lượng là 0, lịch biểu chức năng để thực thi ngay lập tức. Những điều tốt đẹp là chức năng sẽ thực hiện một khi văn bản đã được cắt giảm, vì vậy bạn có thể kiểm tra sau đó nếu textarea của bạn là rỗng (điều này có nghĩa rằng người dùng đã cắt giảm tất cả các văn bản):

var ta = $('#YOUR_TEXTAREA'); 
ta.bind('cut', function() { 
    setTimeout(function(){ 
     if (!ta.val()) { 
      // user cut the whole text. 
     } 
    },0); 
}); 

Bạn có thể cũng muốn thêm kiểm tra trước setTimeout để kiểm tra xem có văn bản nào trong vùng văn bản trước khi văn bản bị cắt hay không (nếu người dùng nhấn Ctrl^X mà không có bất kỳ văn bản nào được chọn, sự kiện cắt vẫn kích hoạt)

+1

Nay, không có thời gian chờ. Tôi khá chắc chắn có một cách để lấy người dùng dữ liệu clipboard chỉ cần cắt. Chỉ cần không tìm ra nó. – ptheofan

+1

sử dụng hết thời gian chờ và quan trọng nhất là bạn mất luồng sự kiện. Cách tốt nhất là đọc clipboard, câu hỏi là thế nào !? – ptheofan

0

Tôi sẽ đề nghị xem xét điều này, JavaScript get clipboard data on paste event (Cross browser), nó dành cho sự kiện dán nhưng tôi chắc chắn bạn có thể làm điều gì đó tương tự và so sánh giá trị hiện tại với điều đó trên khay nhớ tạm, nếu chúng chính xác giống với đầu vào sẽ trống, nếu không thì không.

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