Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znaki diakrytyczne
Forum PHP.pl > Forum > Po stronie przeglądarki
Hpsi
Witam muszę zrobić przechwytywanie znaków diakrytycznych w różnych językach i mam pewien problem.

Więc pokrótce, w celu przechwytywania znaków użyłem jQuery pluginem js-hotkeys.

Wszystko byłoby piękne, ale muszę przechwytywać na "lewym alt" znaki do przykładu:

w języku hiszpańskim na "lewy alt"+u ma pojawiać się znak: ú -> i tutaj pojawia się problem z IE, gdyż prawy alt + u w skrótach na IE oznacza ulubione (przynajmniej u mnie tak się włącza)

podobne problemy są z "alt + e" (dodatkowy problem chrome - otwiera się lista "ustawienia chrome" ) , " alt + a " , " alt + c " , " alt + n "



czy mógłby ktoś mi doradzić co z tym zrobić?
Sephirus
Opcje masz dwie - użyj flasha - on na pewno przechwytuje wszystkie znaki lub spróbuj prosty skrypt JS w którym sprawdzisz jedynie czy działa blokowanie bąbelkowania eventów w IE. Najprościej:

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. function myKeyHandler(event)
  3. {
  4. if(!event) event = window.event;
  5.  
  6. if('preventDefault' in event) event.preventDefault();
  7. event.cancelBubble = true;
  8. event.returnValue = false;
  9. return false;
  10. }
  11.  
  12. document.attachEvent('onkeyup',myKeyHandler);
  13. document.attachEvent('onkeydown',myKeyHandler);
  14.  
[JAVASCRIPT] pobierz, plaintext


Dla innych browserów niż IE użyj:

[JAVASCRIPT] pobierz, plaintext
  1. [...]
  2.  
  3. document.addEventListener('keyup',myKeyHandler,true);
  4. document.addEventListener('keydown',myKeyHandler,true);
[JAVASCRIPT] pobierz, plaintext


Co robi ten skrypt? Nic - i właśnie o to chodzi - przechwytuje on wszystkie naciśnięcia klawiszy i blokuje to co powinno się stać normalnie po ich wciśnięciu. Jeżeli na stronie z tym skryptem te skróty klawiszowe nie zadziałają to znaczy, że trzeba pogrzebać trochę w JS, jeśli i tak przejdą domyślne operacje to znaczy że na 99,9999% się nie da :/

EDIT: Poprawiłem błędy ;P
Hpsi
Hm, twój sposób autentycznie przechwytuje wszystkie wszystko co związane z klawiszami klawiatury, lecz no niestety nie przechwytuje ich na alternatywnych przeglądarkach ...
mimo wszystko i tak dziękuje za pomoc

--
pomęczę się jeszcze z IE i zrobie to pod jedna przeglądarke wink.gif
by_ikar
Hmm, nie wiem do czego ci to konkretnie, ale możesz zrobić wyrażenie regularne, które będzie łapać wszystkie znaki diakrytyczne po wpisaniu danego znaku w konkretne pole i dalej niech się dzieje co ci potrzeba.

Wyrażenie przykładowo może wyglądać tak:

Kod
/([^\w\d\s\.\+\*\?\^\$\[\]\)\|\{\}\/\#&,:-#]+)/is


Coś w ten deseń, na pewno wszystkich znaków nie wymieniłem, coś tam jeszcze by się znalazło, ale sam pomysł wydaje mi się możliwy do ogarnięcia już na wszystkich przeglądarkach wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.