2010-09-16 12 views

Odpowiedz

10

Wydaje się to złym pomysłem, ponieważ jest dużo ponad dane wejściowe tekstu, które daje tekst za darmo (ostrożność, wybór, wycinanie, wklejanie, przeciąganie i upuszczanie, obsługa klawiszy strzałek itp.), Ale oto dwie rzeczy, które trzeba zrobić:

  1. Daj <canvas> atrybut tabindex tak, że może on otrzymać ostrość, a tym samym podniesienie kluczowych zdarzeń;
  2. Dodaj element obsługi keypress (nie keydown) do elementu <canvas> w celu przechwycenia wprowadzania tekstu.

Kod:

<canvas id="textarea" tabindex="1" width="300" height="200"></canvas> 

<script type="text/javascript"> 
    var el = document.getElementById("textarea"); 
    el.onkeypress = function(evt) { 
     var charCode = evt.which; 
     var charStr = String.fromCharCode(charCode); 
     alert(charStr); 
    }; 
</script> 
+1

Myślę, że możesz mieć rację, wygląda na to, że bardzo dużo pracy polega na skopiowaniu textarea i nie widzę żadnych korzyści z utrzymywania textarea (to nie jest tak naprawdę aplikacja, ale bardziej gra z edutainmentem, w której wszystko jest dzieje się w elemencie canvas, ale trzeba odebrać wpis tekstowy). Myślę, że * umieszczenie przezroczystego tekstu na moim płótnie jest najlepszym możliwym rozwiązaniem. –

+0

Podczas gdy naciśnięcie klawisza przechwytuje kody znaków, nie powoduje przechwycenia tylnych pól. Dlaczego warto używać keypown zamiast keydown? –

+0

@ Davav: Użyłbym 'keydown' dla backspace i usunięcia wsparcia. Jednak w celu zbierania danych wejściowych 'keypress' jest jedynym kluczowym zdarzeniem, które daje dane o wpisywanych znakach, więc jest jedynym wyborem. Zobacz http://unixpapa.com/js/key.html –

1

Widziałeś Bespin? Jest czymś więcej niż tylko wymianą textarea, ale w zasadzie robi to, co chcesz. Możesz z pewnością zajrzeć do kodu i dokumentacji lub jeśli pasuje do twoich potrzeb, po prostu z niego skorzystaj.

+3

Skąd wiesz, czego chcą? Czy jesteś czytnikiem myśli? – strager

+1

Będę rephrase - spełni specyficzne wymaganie, o które pytał: "JavaScript HTML5 Capture keyCode i napisz na płótno" Jako edytor tekstu oparty wyłącznie na płótnie, przechwytują klawisze wpisane i wyświetlają je przy użyciu płótna - między innymi. –

3

jQuery:

<div id="myTextArea></div> 

$('#myTextArea').keypress(function (event) { 

    $('#myTextArea').append(String.fromCharCode(event.which)); 

}); 
Powiązane problemy