2013-04-02 8 views
8

Używam content editable div, ponieważ chcę wyświetlać emotikony wybrane przez użytkownika w obszarze tekstowym.Pobierz usuniętą postać z edytowanej zawartości div

Chcę się dowiedzieć, co to jest characterdeleted z przyciskiem backspace lub delete.

Czy można poznać postać z numerem jquery lub javascript?

UPDATE

To nie jest wcale duplikatu, ponieważ wszystkie odpowiedzi są o tym, jak śledzić wciśnięty klawisz nie o delected charakteru.

+0

@Blazemonger Nie wiem, czy można to osiągnąć? –

+0

Możesz spróbować uchwycić przycisk Backspace ... [http://stackoverflow.com/questions/4935655/how-to-trap-the-backspace-key-using-jquery](http://stackoverflow.com/ pytania/4935655/how-to-trap-the-backspace-key-using-jquery) – Joseph

+0

@Joseph Mogłem tylko śledzić naciśnięty klawisz. Ale jak uzyskać usuniętą postać –

Odpowiedz

3

Nie mam czystego rozwiązania. Ale ten pokazuje usunięty char jeśli trafisz klawisz 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

Tak właśnie myślałem, że problem musi zostać zgłoszony – Ryan

+0

Jeśli klikniesz na wersję demo i naciśniesz klawisz Backspace na ostatnia postać, działa - ale jeśli wtedy wykonasz dowolny typi ng w dowolnym miejscu w dokumencie, następny backspace zgłosi zły znak. – NibblyPig

+0

@SLC Przykro mi ale nie mogę odtworzyć twojego problemu. –

0

Można korzystać z funkcji preventDefault() robić, co chcesz.

Oto przykład przy użyciu <textarea> ale powinna rozciągać się do dowolnego elementu:

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(); 
    } 

}); 

W preventDefault() metoda blokuje działanie Backspace, więc ostatni znak nie zostanie usunięty. Możesz wtedy zobaczyć, jaki jest ostatni znak i samodzielnie wykonać operację Backspace.

Będziesz musiał zmienić powyższy przykład, aby wykryć bieżącą pozycję kursora, aby usunąć prawidłowy znak, ale to jest początek.

+2

A jeśli usunięta postać nie jest ostatnią? –

+0

Jak już wspomniałem w poprzednim akapicie, nie wykonuję całej pracy;) – NibblyPig

+2

Poważnie ... Jedyną trudnością było znalezienie * tego, co * usunięto. –

Powiązane problemy