Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS]Problem z przechwyceniem kodu klawiatury pod FireFox'em
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Sokrates
Witam ,mam taki problem jak w temacie,a mianowicie mam pola
typu "input" do ktorych wprowadzam jakis text, chcem filtrowac to co
wprowadzam z klawiatury i dopuszczac tylko te znaki ktore sa
dozwolone dla danego pola (np dla pola 'wiek' bedzie mozna
wprowadzic tylko cyfry a dla pola 'imie' tylko litery).
Korzystam tu ze zdarzenia "onKeyPress" ktora wywoluje funkcje
"keyPress();"

W HTMLu wyglada to miej wiecej tak:
  1. <INPUT TYPE="text" SIZE=45 NAME="name" onChange="msg(this.form)" onKeyPress="keyPress();">

a w JavaScript
  1. function keyPress(){
  2. if (event.keyCode < 48 || event.keyCode > 57){
  3. event.returnValue = false;
  4. }
  5. }


Niestaty dziala to tylko pod IE i pod Opera, Pod FF nie chce to dzialac i wyswietla mi
taki komunikat:
event is not defined

Domyslam sie ze pod FF jakos inaczej definiuje sie zdarzenia, albo jakos trzeba zdefiniowac klase
"event". Dodatkowo w programie do sledzenia kodu widze ze kod klawisza znajduje sie pod zmienna
"charCode" a pod "keyCode" zawsze jest 0 co bym nie nacisnol. Moze ktos z was wie jak skonstruowac funkcje ktora bedzie obslugiwac przerwania z klawiatury pod FF.



Szukalem juz na necie niestety nic nie znalazlem, jesli bedzie ktos znal sposob rozwiazania mego problemu to prosze o pomoc.
Dzieki
ferr
  1. function keyPress(){
  2. event = event||e;
  3. if (event.keyCode < 48 || event.keyCode > 57){
  4. event.returnValue = false;
  5. }
  6. }


?
Sokrates
To chyba nie o to chodzi...
do tej linijki dodalem jeszcze na poczatku "var" i teraz mi rzuca wyjatkiem ze nie wie co to jest "e"



Chyba w FF inaczej definiuje sie obsluge zdarzen?

Ktos wie jak?


Udalo mi sie znalesc rozwiazanie , tak na szybko , jest jeszcze do dopracowania, bo pod Opera jak focus jest w polu textowym gdzie lapie przerwania klawiatury i wcisne jakies klawisze funkcyjne (np F5, odswiez), to nie dziala nie odswieza mi strony (mechanizm przechwytuje to przerwanie i nie dopuszcza go bo domyslnie mam w tym polu ustwione aby wpisywac tylko cyfry - wiec to muszę jeszcze dopracowac, ale ten blad wystepuje tylko w Operze.

Input gdzie wpisuje sie text wyglada tak:
  1. <INPUT TYPE="text" SIZE=45 NAME="wiek" onChange="msg(this.form)" VALUE="" onKeyPress="return keyPress(event);">


a sama funkcja tak:
  1. function keyPress(evt){
  2. var charCode = (evt.which) ? evt.which : event.keyCode
  3. if (charCode < 48 || charCode > 57){
  4. return false;
  5. }
  6. return true;
  7. }


Pozdrawiam
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.