[PHP][HTML]Formularz - dostępność drugiego pola zależna od wyboru w pierwszym |
[PHP][HTML]Formularz - dostępność drugiego pola zależna od wyboru w pierwszym |
23.09.2009, 13:04:40
Post
#1
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
Witam, mam sobie taki kod na formularz (wycialem css i kilka pól)
Zastanawiam sie jak sprawic by po wybraniu opcji1 w selekcie byl dostepny akapit "Recovery time objective" i jego selekty z których wybieram date i godzine a po wybraniu opcji2 z selektu byl dostepny akapit "System available date / time" wraz z selektami w tym akapicie. Chcialbym zeby domyslnie(przed wybraniem opcji w selekt) nie byl dostepny ani akapit "recovery time objective" ani "system available date/time". Na JS sie w ogole nie znam wiec bez agresji prosze:P Drugie pytanie to w polach typu textarea czasami wpisuje kilka wierszy oddzielonych enterami ale nie moge sprawic zeby te entery byly tolerowane tzn jak dam po wykonaniu formularza echo $_POST['nazwa_pola_textarea']; to wszystko jest w jednej linii. Do celowo zalezy mi na tym zeby pola z textarea byly wpisywana do bazy a nastepnie wysylane w email'u, wszystko jest zrobione i dziala oprócz enterów w tresci wyslanej wiadomosci. Przykladowy kod odnosnie braku enterów: skrypt.php
Ten post edytował XxmanxX 23.09.2009, 13:19:10 |
|
|
23.09.2009, 13:11:21
Post
#2
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
A może być przy uzyciu biblioteki jquery - oto przykład:
|
|
|
23.09.2009, 13:22:36
Post
#3
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
Zrobiłem kopiuj wklej Twojego kodu i nie bardzo wiem o co Ci chodziło, nie używałem nigdy biblioteki jquery.
Co ten skrypcik miał robić? Pozdro |
|
|
23.09.2009, 13:35:04
Post
#4
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
Jak wybierzesz pierwszą opcję z selecta to pokaże zawartośc diva o id ='kontener', jak wybierzesz pozostałe to ukryje. jQuery to bardzo fajna biblioteka javascript. Ściągasz ją stąd: http://jquery.com/
I dołączasz w sekcji <head> strony w ten sposób: (tylko ściągnięty plik jquery będzie miał nazwę z numerkiem na końcu to ten numerek usuń z nazwy albo zmień wyżej src) Jak masz pytania albo watpliwosci to pytaj smialo Ten post edytował wiewiorek 23.09.2009, 13:44:25 |
|
|
24.09.2009, 11:02:21
Post
#5
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
Wielkie dzięki:)
Jeszcze jedno pytanko, jak w tej funkcji uzależnić widoczność kontenera od zmiennej $_GET którą będę pobierał. Jak się tworzy warunek if ze zmienną pozdrawiam |
|
|
24.09.2009, 11:33:12
Post
#6
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
Daj jakiś przykład co chcesz zrobić.
|
|
|
24.09.2009, 12:14:30
Post
#7
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
Jak ładuje strone to chociaż ma domyślnie ustawiony select status np. na Work in progress to nie wyświetla <div id="recovery_time_objective"> tylko dopiero jak sam ręcznie wybiore z select status opcje Work in progress to wyświetli <div id="recovery_time_objective">. Myślałem że może gdybym na początu strony przypisał $zmienna=$_GET['status'] i wtedy wrzucil to w warunek w JS scirpt to by zadziałało bez recznego wybierania z listy? |
|
|
24.09.2009, 12:22:38
Post
#8
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
No teraz rozumiem
Bo patrz, ja (i Ty wzorując się na moim kodzie) dałeś na samym początku skryptu: Kod $('#recovery_time_objective').hide(); $('#system_available_date_time').hide(); Czyli elementy o id=recovery_time_objective oraz id=system_available_date_time są od razu po załadowaniu strony ukrywane. Usuń te dwie linie kodu to będą widoczne. I tak w ogóle to w formularzach domyślną metodą wysyłania danych jest GET, ale lepiej zmieniać na POST <form method='post'>, bo GET ma jakiś tam limit znaków, a poza tym to potem jest widoczne w url więc w url robi się niezły śmietnik. GET'em głównie się przesyła jakieś identyfikatory, np. rekordów w bazie danych - jakieś krótkie rzeczy. Ten post edytował wiewiorek 24.09.2009, 12:28:58 |
|
|
24.09.2009, 12:29:31
Post
#9
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
Usunąlem te dwie linie kodu , ale teraz przypisuje zmienną $_GET['status'] do opcji w select a zarówno
<div id="recovery_time_objective"> i <div id="system_available_date_time"> są domyślnie widoczne. |
|
|
24.09.2009, 12:32:34
Post
#10
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
A jak powinno być ? Wnioskuję, że jeden element chcesz mieć na samym początku po załadowaniu strony gdy jeszcze nic nie wybrało się z selecta ukryty a drugi widoczny, tak ? Element o jakim id chcesz mieć ukryty a o jakim id widoczny na starcie ?
|
|
|
24.09.2009, 12:57:38
Post
#11
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
W formularzu mam jeszcze kilka pól które są od początku widoczne, te dwa muszą być ukryte i pojawiać się wzależności od opcji z listy rozwijanej
|
|
|
24.09.2009, 13:23:42
Post
#12
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
Chodzi ci o cos takiego:
|
|
|
24.09.2009, 14:36:29
Post
#13
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
A działa Ci to bo mi nie, od razu mam dostępne dwie opcje.
Czy możesz mi pokazać jak by wyglądałby kod w którym widoczność <div id="recovery_time_objective"> i <div id="system_available_date_time'> byłaby zależna od wartość zmiennej $status Dla $status=='Work in progress' $('#recovery_time_objective').show(); $('#system_available_date_time').hide(); Dla $status=='Closed' $('#recovery_time_objective').hide(); $('#system_available_date_time').show(); A dla $status=='' $('#recovery_time_objective').hide(); $('#system_available_date_time').hide(); Ten post edytował XxmanxX 24.09.2009, 14:37:13 |
|
|
24.09.2009, 14:57:15
Post
#14
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
Kompletnie nie rozumiem co masz na mysli - jak to nie działa ?
Strona główna: http://img121.imageshack.us/my.php?image=09242009155423.png Po wybraniu opcji z listy: http://img12.imageshack.us/my.php?image=09242009155547.png Po kliknięciu na przycisk update: http://img43.imageshack.us/my.php?image=09242009155615.png Zresztą jak chcesz żeby gdy ktoś wpisze w przeglądarce w adresie url: http://localhost:81/?status=Work+in+progre...able_date_time= wyświetlać lub ukrywać dane pole to nie trzeba do tego używać javascript, wystarczy użyć php - pobrać GET'em wartość 'status' i w zależności od jej wartości wyświetlać lub nie pola. Javascript/ajaxa używa się gdy coś ma zostać wykonane bez przeładowania strony, ale ja nie bardzo rozumiem co masz na myśli także już nie wiem Ten post edytował wiewiorek 24.09.2009, 15:02:49 |
|
|
24.09.2009, 15:04:03
Post
#15
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
Heh, ja w momencie kiedy ładuje strone po raz pierwszy już znam (ze zmiennej $status) domyślną wartość listy rozwijanej.
I chciałbym żeby przy ładowaniu strony właśnie w zalenożności od tej zmiennej wyświetlał się albo jeden kontener albo drugi. A następnie jeśli user chce to sam wybiera opcje z listy i zmienia sie kontener lub zostaje kontener ten załadowany przy starcie strony(ale zależny od zmiennej $status). Rozumiesz ? Step by step: 1. ładuje strone 2. rozpakowuje z bazy pole status 3. jesli $status=='Work in progress' to takie kontenery widoczne a inne nie jeśli $status=='Closed' to takie kontenery widoczne a inne nie, jeśli $status=='' to wszystkie kontenery nie widoczne. 4. Pkt. 3 to domyślny wygląd formularza 5. User może zmienić wartość selectu i automatycznie mają się zmieniać widoczne/niewidoczne kontenery bez przycisku submit formularza Ten post edytował XxmanxX 24.09.2009, 15:12:24 |
|
|
24.09.2009, 15:11:14
Post
#16
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
Pokaż mi tylko przykładowy url - link, pod którym jest coś nie tak, bo nie rozumiem U mnie wszystko jest ok zgodnie z tymi punktami.
Ten post edytował wiewiorek 24.09.2009, 15:13:11 |
|
|
24.09.2009, 15:20:18
Post
#17
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
Strona po załadowaniu
http://img411.imageshack.us/i/79007366.jpg/ Po wybraniu opcji http://img16.imageshack.us/i/79549083.jpg/ |
|
|
24.09.2009, 15:24:09
Post
#18
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
To wygląda jakby jQuery Ci w ogóle nie działało - masz pobraną bibliotekę jQuery i ją dodaną w ten sposób:
<script type="text/javascript" src="jquery.js"></script> ? Masz tu cały DZIALAJĄCY kod:
Jeśli nie działa to znaczy, że nie masz biblioteki jQuery Ten post edytował wiewiorek 24.09.2009, 15:30:26 |
|
|
24.09.2009, 16:36:34
Post
#19
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 22.07.2009 Ostrzeżenie: (0%) |
Chyba znalazłem swój błąd, ale nie mam teraz dostępu do kodu, jutro sprawdzę i dam znać;)
Dzięki za poświęcony czas, pozdrawiam;) |
|
|
24.09.2009, 17:52:36
Post
#20
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) |
Powodzenia
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.05.2024 - 21:17 |