Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js+php]Dynamiczny formularz
Forum PHP.pl > Forum > Przedszkole
aleksandra
Cześć
chciałabym zrobić interaktywny formularz zawierający m.in listę (<select>), lista jest generowana dynamicznie przez php z zawartości tabeli mysql i w ogólności jej zawartość nie jest stała.
Po wybraniu jednej z pozycji ("inne") ma się pokazać dodatkowe pole input.
Wiem już, że wykonać należy to z wykorzystaniem java script, znalazłam cechy obiektu select, ale zadne nie przedstawia zaznaczonej pozycji co do wartości a tylko co do indeksu (który z uwagi na zmienna zawartość listy może sie zmieniać - stała jest nazwa opcji)

Wymyśliłam coś takiego:
  1. onload=function(){
  2. document.formularz.input ustaw jako niewidzialny}
  3.  
  4. function sprawdz(){
  5.  
  6. with(document.formularz){
  7. pobierz options dla obiektu lista
  8. sprawdz jaki indeks ma opcja "inne"
  9. jesli selectedIndex dla obiektu lista = wcześnie sprawdzonemu indeksowi ustaw widzialność obiektu input
  10. w przeciwny wypadku pozostaw niewidzialny
  11. }
  12.  
  13. <form name="formularz">
  14.  
  15. <input type="text" name="input" onfocus(?)="sprawdz()">
  16. <select name="lista" >
  17. <!-- przykladowy wyglad wygenerowanej przez php listy-->
  18. <option >A
  19. <option >B
  20. <option>inne
  21. </form>

Jako że javascript widzę pierwszy raz sadsmiley02.gif nie mam pojecia jak to zakodować ani nawet czy to ma szanse zadziałać (i czy taka postac listy select jest poprawna, bo w przykładach js widziałam nieco inną)

Z góry ogromnie dziękuję za wszelką pomoc
Ja_Szczur
kod pisany "na gorąco" :]

  1. ...
  2. <body onload="sprawdz()">
  3. ...
  4. <form method="post" name="formularz">
  5. <input type="text" name="pole">
  6.  
  7. <select name="sel" onChange="sprawdz()">
  8. <option value="wartosc1"> tekst1 </option>
  9. <option value="wartosc2"> tekst2 </option>
  10. ....
  11. <option value="inne"> ...inne </option>
  12. </form>
  13.  
  14. <script language="JavaScript">
  15. function sprawdz()
  16. {
  17. if( document.formularz.sel.options[ document.formularz.sel.selectedIndex ].value == "inne" )
  18. document.formularz.pole.style.display = 'inline';
  19. else
  20. document.formularz.pole.style.display = 'none';
  21. }
aleksandra
blinksmiley.gif nie spodziewałam się gotowego kodu, dziękuję ogromnie.

Jakie to proste jak ktos napisze biggrin.gif
Pięknie działa. Jeszcze raz dziękuję.

Mam jedno pytanie:
czy opcja value
<option value="wartosc1"> tekst1 </option>
jest niezbedna? zawsze konstruowałam listy wyboru bez niej i wszystko działało biggrin.gif
piotrekkr
tak mi sie wydaje ze jesli nie ma value="wartosc to za wartosc tego przyjmowane jest to co jest pomiedzy
Kod
<option>...</option>
Athlan
Cytat(aleksandra @ 13.07.2006, 18:19 ) *
czy opcja value
<option value="wartosc1"> tekst1 </option>
jest niezbedna? zawsze konstruowałam listy wyboru bez niej i wszystko działało biggrin.gif


sobie sprawdź:

  1. <?php
  2. if($_POST['value_test'])
  3. {
  4. echo'Wypluło: '.$_POST['value_test'];
  5. }
  6. else
  7. {
  8. <form action="'.$_SERVER['PHP_SELF'].'" method="post">
  9. <select name="value_test">
  10. <option>costam</option>
  11. <input type="submit" value="a se testuj biggrin.gif">
  12. </select>
  13. </form>
  14. ';
  15. }
  16. ?>

[pisane na szybko]
pozdro smile.gif

EDIT... ach zapomnialem przycisku submit tongue.gif poprawione
Gość
He, he, dzięki.
Aż taka początkująca nie jestem co by sobie submit nie dodać tongue.gif

Ogromne dzięki za pomoc
aleksandra
Upss, biggrin.gif
Zapomniałam się zalogować. Sorki

Jeszcze raz dzięki za pomoc
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.