Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [nazwa funkcji] is not defined
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
ktuvok
Od długiego czasu używam w skryptach funkcji javascript, która blokuje wprowadzenie znaku innego niż alfanumeryczny do pola. Nie wiem, czy ma to jakieś znaczenie, ale funkcja wygląda tak:

Kod
function TylkoCyfry(e,decReq)
{
        var key = e.keyCode||e.which;
        var obj = e.srcElement||e.target;
        var isNum = ((key>47 && key<58) || key==27 || key==8) ? true:false;
        var dotOK = (key==46 && decReq && obj.value.indexOf(".")<0) ? true:false;
        return (isNum || dotOK);
}


Mam problem z jej wywołaniem tylko w jednym przypadku. Strona główna zawiera ramkę wewnętrzną (IFRAME). W dokumencie wyświetlanym w ramce jest link otwierający nowe okienko. W tym okienku ładuję formularz i dla jednego z pól ustawiam:
  1. <input type="text" onkeypress="return TylkoCyfry(event,1)" ...>

Przy próbie wprowadzenia jakiegokolwiek znaku do tego pola debugger javascriptu w przeglądarce Firefox zaczyna mi wrzeszczeć: "Błąd: TylkoCyfry is not defined.".

Jeśli takie pole umieszczę nie w okienku, tylko w głównym oknie, to wszystko działa jak należy!

Sprawdziłem, że:
1. dla okienka plik z funkcjami javascript jest właściwie podpięty,
2. nie ma znaczenia, czy okno główne "zna" tę funkcję (próbowałem ją skopiować do kodu javascript przypisanego do głównego okna).

Jakieś sugestie? Bo powoli wymiękam...

Pozdrawiam,
K
revyag
Skoro dostajesz error że ta funkcja nie jest zdefiniowana to znaczy że oknie nie ma do niej dostępu, czyli źle podałeś ścieżki, albo źle dołączyłeś plik z funkcjami. Innej opcji nie widze.
ktuvok
Pozostałe funkcje wpisane w tym samym pliku działają... W IE również wszystko działa, a przecież IE jest dość mocno podatny na błędy js. Sądzę, że plik z javascriptem jest prawidłowo podlinkowany.

Czego jeszcze mogę się chwycić?

Pozdrawiam,
K
revyag
Możesz dać linka do strony ?
ktuvok
Tak, podesłałem Ci szczegóły (adres + login + hasło) na priv.
orson
witam ...

dodaj z przodu, przed jej wywołaniem: opener.parent.TylkoCyfry() ...
to znaczy że odwołujesz się do okna otwierającego dane okno a następnie do rodzica danej ramki ... powinnno dziłać ...

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.