2013-04-02 37 views
8

Tôi đang sử dụng content editable div vì tôi muốn hiển thị biểu tượng cảm xúc do người dùng chọn trong vùng văn bản.Nhận nhân vật đã xóa khỏi nội dung có thể chỉnh sửa div

Tôi muốn biết những gì characterdeleted với nút backspace hoặc delete.

Có thể biết nhân vật với jquery hoặc javascript?

CẬP NHẬT

Đây không phải là ở tất cả các bản sao, vì tất cả câu trả lời là về làm thế nào để theo dõi một phím nhấn không về nhân vật delected.

+0

@Blazemonger tôi không biết liệu điều này có thể đạt được không? –

+0

Bạn có thể thử và chụp nút backspace ... [http://stackoverflow.com/questions/4935655/how-to-trap-the-backspace-key-using-jquery](http://stackoverflow.com/ câu hỏi/4935655/cách-để-trap-the-backspace-key-sử dụng-jquery) – Joseph

+0

@Joseph tôi chỉ có thể theo dõi phím bấm. Nhưng làm thế nào để tôi có được các ký tự bị xóa –

Trả lời

3

Tôi không có giải pháp sạch. Nhưng điều này cho bạn thấy char gỡ bỏ nếu bạn nhấn phím backspace:

var lastText = $('#editable').text(); 
$('#editable').keyup(function(event){ 
    if (event.which==8 || event.which==46) { 
    var newText = $(this).text(); 
    for (var i=0; i<lastText.length-1; i++) { 
     if (lastText[i]!=newText[i]) { 
     console.log("char '" + lastText[i] + "' was removed at index "+i); 
     lastText = newText; 
     return; 
     } 
    } 
    } 
}); 

Demonstration

+0

Đây chính xác là cách tôi nghĩ rằng vấn đề sẽ phải được chấp thuận – Ryan

+0

Nếu bạn nhấp vào bản trình diễn và nhấn backspace ký tự cuối cùng, nó hoạt động - nhưng nếu bạn làm bất kỳ typi nào bất cứ nơi nào trong tài liệu, backspace tiếp theo sẽ báo cáo sai ký tự. – NibblyPig

+0

@SLC Tôi rất tiếc nhưng tôi không thể tái tạo sự cố của bạn. –

0

Bạn có thể sử dụng preventDefault() chức năng để làm những gì bạn muốn.

Dưới đây là một ví dụ sử dụng một <textarea> nhưng nó phải mở rộng đến bất kỳ yếu tố:

http://jsfiddle.net/4dThe/

$('#txtArea').keydown(function(e) { 

    if (e.which == 8) 
    { 
    var value = $(this).val(); 
    var lastchar = value.substring(value.length - 1); 

     alert("Last character is: " + lastchar); 
     $(this).val(value.substring(0, value.length - 1)); 
     e.preventDefault(); 
    } 

}); 

Các preventDefault() phương pháp khối hoạt động backspace, vì vậy các ký tự cuối cùng là không bị xóa. Sau đó, bạn có thể xem ký tự cuối cùng là gì và tự mình thực hiện thao tác backspace.

Bạn cần phải thay đổi ví dụ trên để phát hiện vị trí con trỏ hiện tại để xóa ký tự chính xác, nhưng đó là sự bắt đầu.

+2

Và nếu ký tự bị xóa không phải là ký tự cuối cùng? –

+0

Như tôi đã nói trong đoạn cuối, tôi không làm tất cả công việc;) – NibblyPig

+2

Nghiêm túc ... Khó khăn duy nhất ở đây là trong việc tìm kiếm * ký tự * bị loại bỏ. –

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