Uruchom klawisz za pomocą jQuery… i określ, który klawisz został naciśnięty

Chciałbym mieć element wejściowy (type = text) lub element textarea, który sprawdza się dynamicznie, uruchamiając określone naciśnięcia klawiszy. Będzie to używane do wprowadzania chińskich pinyin, więc na przykład:

Użytkownik wpisuje „ma2” w elemencie wejściowym. Zdarzenie keydown uruchamia się przy każdym naciśnięciu klawisza, a 2 nigdy się nie pojawia. Zamiast tego, gdy użytkownik naciśnie „2”, „a” otrzyma znak dźwiękowy, taki jak ten: „á”. W końcu użytkownik wpisze: „má”.

Można to osiągnąć, odczytując i zmieniając całą wartość wejściową za pomocą $ (element) .val (), jednak gdy element wejściowy ma fokus i jego wartość jest ustawiana przez wywołanie .val („coś”), kursor przesuwa się do końca tekstu. Działa to dobrze w większości sytuacji, ponieważ użytkownik po prostu kontynuuje wpisywanie na końcu pola, ale chcę, aby to działałowszystko sytuacje.

... innym rozwiązaniem tego problemu byłoby uzyskanie / ustawienie położenia kursora w elemencie input lub textarea. Jednak nie sądzę, aby było to możliwe w javascript.

Więc Remy był na pewno na dobrej drodze. Przyciski wyzwalające nie pozwoliłyby mi na wprowadzanie znaków specjalnych bez zbytnich kłopotów. Zamiast tego łapię zdarzenie keydown i ustawiam wartość input / textarea, a następnie przesuwasz daszek.

W jQuery nie znalazłem niczego dobrego dla zdobywania / ustawiania karetki, ale poniższe naprawdę złamały mi ten problem. Opublikuję link do mojego końcowego kodu wejściowego pinyin, gdy jest stabilny. Jest teraz dość blisko.

http://blog.vishalon.net/Post/57.aspx http://demo.vishalon.net/getset.htm

questionAnswers(2)

yourAnswerToTheQuestion