Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js] Zachowanie zalezne od zawartosci pola formularza.
leniu
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 2
Dołączył: 6.02.2008

Ostrzeżenie: (0%)
-----


Witam,

Zaimplementowalem juz prawidlowo skrypt autouzupelniania pol formularza danymi z tablicy. Chcialbym obecnie dodac opcje, ktora w zaleznosci od zawartosci pola formularza bedzie operowala na wlasciwej tablicy danych - chcialbym zatem aby po wpisaniu w polu miejscowosc nazwy miejscowosci A w polu nastepnym do wyboru w opcji autouzupelniania byly ulice z tabeli ulice_A, a przy wpisaniu nazwy miejscowosci B ulice z taleli ulice_B.

Skrypt autouzupelniania wywolywany jest za pomoca:

obj1 = new actb(document.getElementById('pole_miejscowosc'),miejscowosc);

gdzie pole_miejscowosc jest nazwa pola w formularzu a miejscowosc to tablica nazw miejscowosci.
Jak sie domyslam po wpisaniu w pole miejscowosci przykladowo WARSZAWA wartosc document.getElementById('pole_miejscowosc') powinna byc rowna 'WARSZAWA' i tu pewnie moznaby zastosowac jakies if'y. Probowalem z tym juz zabawe (probowalem cos w stylu :

if (getElementById('pole_miejscowosc') == 'WARSZAWA') obj1 = new actb(document.getElementById('pole_ulice_warszawy'),ulice_WARSZAWA);
else...

), ale niestety poleglem. Prosze zatem o pomoc.

Mam tez drugie pytanie, gdyz potem bede musial i tak to walidowac. W jaki sposob sprawdzic czy wartosc wprowadzanego pola znajduje sie w tablicy, ale z poziomu PHP, bo sprawdzal bede przed wprowadzeniem juz pod PHP. Czyli w gruncie rzeczy jak sprawdzic czy $_POST['ulica'] znajduje sie w js'owym var ulica = new Array('A','B','C',...);

Pozdr.

Problem rozwiazany.

Na pole formularza, ktorego zawartosc miala byc zmienna dla skryptu JS inicjowanego w polu kolejnym zalozylem event:

Kod
   onblur="tablicaUlicAdr(this);"


i napisalem odpowiednia funkcje zajmujaca sie tym zdarzeniem:

Kod
   function tablicaUlicAdr()  
   {
       var adr_ms = document.nazwa_formularza.nazwa_pola.value;
       if (adr_ms == 'PRZEMYŚL') obj6 = new actb(document.getElementById('nazwa_pola_formularza'),nazwa_tablicy_ulic);
       else if (adr_ms == 'JAROSŁAW') obj6 = new actb(document.getElementById('nazwa_pola_formularza'),nazwa_tablicy_ulic);
           else obj6 = new actb(document.getElementById('nazwa_pola_formularza'),pusta);
   }


No i wszystko dziala jak nalezy - nie wiem jak optymalizacyjnie i wydajnosciowo to stoi, ale przynajmniej robi to, co ma robic.

Teraz czeka mnie walidacja danych z poziomu PHP. Do tego zadania musze dokonac sprawdzenia czy zmienna $_POST['x'] nalezy do tablicy zdefiniowanej w JS jako var ulica = new Array('A','B','C',...). Powie mi ktos jak to zaimplementowac? Moze nie bede musial sam do tego dochodzic (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) W koncu nie na darmo moj nick to LENIU (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ten post edytował leniu 8.03.2008, 23:00:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Możesz to nieco obejść tj.:

W JS:
1. Tworzysz plik tablica.js, który zawiera:
  1. var ulica = new Array('A','B','C',...);

2. W skrypcie JS wczytujesz plik poprzez zwykłe <script type="text/javascript" src="tablica.js"> i sobie korzystasz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

W PHP:
1. Wczytujesz zawartość pliku tablica.js do zmiennej np. $v = file_get_contents('tablica.js') po czym przerabiasz kod pod PHP czyli:
1.1. Usuwasz słowo "var".
1.2. Zmieniasz "ulica" na "$ulica".
1.3. Usuwasz słowo "new".
2. Przepuszczasz zmienną $v przez funkcję eval" title="Zobacz w manualu PHP" target="_manual.

Po tych zabiegach powinieneś mieć dostęp do tablicy $ulica bezpośrednio z PHP.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 01:23