W polu wejściowym lub contenteditable = true div, w jaki sposób mogę zmodyfikować naciśnięcie klawisza litery "a", aby zwrócić klucz do litery "b"? Oznacza to, że za każdym razem, gdy wpiszesz literę "a" w dziale, wynik jest w rzeczywistości literą "b".Zmiana keypressa
Nie interesuje mnie rozwiązanie działające w IE - tylko takie, które działa w Safari, Chrome, & FF.
W Chrome widzę, że zdarzenie naciśnięcia klawisza ma właściwości "charCode", "keyCode" i "which", z których wszystkie otrzymują przypisany numer zdarzenia keypress. Jeśli wystrzeliwam zdarzenie przy naciśnięciu klawisza, mogę zmodyfikować te wartości, ale nie wiem, co zwrócić, aby właściwy wpisywany klucz był inny. Na przykład:
$(window).keypress(function(e){ //$(window) is a jQuery object
e.charCode = 102;
e.which = 102;
e.keyCode = 102;
console.log(e);
return e;
});
Mogę także zobaczyć, że wraz z charCode, co i kod, istnieje również „originalEvent” nieruchomość, która z kolei posiada te właściwości. Jednak nie byłem w stanie zmodyfikować tych (próbowałem z takimi elementami, jak e.originalEvent.charCode = 102).
Dzięki Tim. Funkcja insertTextAtCursor(), którą napisałeś w pierwszym podanym przez ciebie linku, robi trik! – maxedison
Bardzo dziękuję Tim, kończę jeden dzień na badanie sprawy "jak zmienić słowo kluczowe na język angielski?" ale nie znalazłem optymalizacji i małych i zrozumiałych, dopóki nie znalazłem odpowiedzi. –
Zaimplementuję przykład "non-IE jsFiddle" i udostępniony w stos i gitbub za pomoc dla wszystkich. narzędzie obsługujące wszystkie pozostałe języki. dzięki jeszcze raz. –