![]() |
![]() |
![]()
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 ![]() ![]() Ten post edytował leniu 8.03.2008, 23:00:34 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Musisz przenieść tą tablicę do PHP po prostu ją deklarując, po czym możesz skorzystać z funkcji in_array" title="Zobacz w manualu PHP" target="_manual do sprawdzenia czy dany element znajduje się w tablicy.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 2 Dołączył: 6.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem zatem, ze ta metoda polega na zadeklarowaniu takiej samej tablicy jak mam juz w JS za pomoca PHP, czyli biorac jako przyklad:
Kod var ulica = new Array('A','B','C',...); definiuje to samo w PHP: Kod $ulica = Array('A','B','C',...); Zgadzam sie, ze jest to najprostsze rozwiazanie, z tym, ze jesli musialbym zmienic zawartosc tej tablicy, musialbym zrobic to w dwoch miejscach, a z czasem moge o tym obowiazku po prostu zapomniec. Jaka bylaby metoda na to, by PHP sam sobie ja zadeklarowal w odpowiednim dla mnie momencie biorac jako argumenty parametry tablicy zadeklarowanej juz przy pomocy JS? Ten post edytował leniu 9.03.2008, 13:21:01 |
|
|
![]()
Post
#4
|
|
![]() 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:
2. W skrypcie JS wczytujesz plik poprzez zwykłe <script type="text/javascript" src="tablica.js"> i sobie korzystasz ![]() 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. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 2 Dołączył: 6.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
A to spryciarz
![]() Dzieki. A jak zmienic kolor tla wybranego pola formularza? Domyslam sie, ze musze mu dac event np.: Kod onfocus="zmianaPola(this);" i napisac funkcje: Kod function zmianaPola() { //tylko co tutaj? :) dziala dla document.getElementById('nazwa_id_pola_formularza').style.background = '#ffa20c'; //ale mam problem z tym, aby obslugiwalo wszystkie moje pola formularza //czyli nie wiem jaki parametr mam przekazac i jak zbudowac cialo funkcji } Pozdr. Ten post edytował leniu 9.03.2008, 15:43:52 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 15:11 |