Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][HTML]Formularz w JS
Forum PHP.pl > Forum > Przedszkole
David_Rook
Witam Panowie,

Jestem raczkujący jeżeli chodzi o JaveScript. Na potrzeby pewnej pracy musiałem zrobić formularz, którego zawartość zmienia się dynamicznie w zależności od wybranej opcji.
Po dłuższym czasie cel udało się osiągnąć.

Kod:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2.  
  3. <title>.:.: Wyszukiwarka Kredytów :.:.</title>
  4. <meta content="text/html; charset=utf-8" http-equiv="content-type" />
  5. <script type='text/javascript' src="js/jquery-1.7.2.min.js"></script>
  6. <script type='text/javascript' src="js/jquery-ui-1.8.22.custom.min.js"></script>
  7. <link rel="stylesheet" href="css/ui-darkness/jquery-ui-1.8.22.custom.css" />
  8. <link type="text/css" rel="stylesheet" href="main.css" />
  9. <!--Funkcja jQuery odpowiadająca za działanie zakładek-->
  10. <script type='text/javascript'>
  11. $(function() {
  12. $( "#kredyty" ).tabs();
  13. });
  14. </script>
  15.  
  16. <script type='text/javascript'>
  17. function onSelect(objSelect)
  18. {
  19. if(objSelect.value=="2")
  20. {
  21. document.getElementById("zakup").style.display='block'; //Pokazuje opcje
  22. }
  23. else
  24. {
  25. document.getElementById("zakup").style.display='none'; //chowa
  26. }
  27.  
  28. if(objSelect.value=="3")
  29. {
  30. document.getElementById("refinansowanie").style.display='block'; //Pokazuje opcje
  31. }
  32. else
  33. {
  34. document.getElementById("refinansowanie").style.display='none'; //chowa
  35. }
  36. if(objSelect.value=="4")
  37. {
  38. document.getElementById("konsolidacja").style.display='block'; //Pokazuje opcje
  39. }
  40. else
  41. {
  42. document.getElementById("konsolidacja").style.display='none'; //chowa
  43. }
  44. if(objSelect.value=="5")
  45. {
  46. document.getElementById("pozyczka").style.display='block'; //Pokazuje opcje
  47. }
  48. else
  49. {
  50. document.getElementById("pozyczka").style.display='none'; //chowa
  51. }
  52. }
  53. </script>
  54.  
  55.  
  56. </head>
  57.  
  58. <h2><center>Wyszukiwarka kredytów</center></h2>
  59.  
  60. <div id="kredyty">
  61. <ul>
  62. <li><a href="#hipoteczny">Kredyt Hipoteczny</a></li>
  63. <li><a href="#samochodowy">Kredyt Samochodowy</a></li>
  64. <li><a href="#inwestycyjny">Kredyt Inwestycyjny</a></li>
  65. <li><a href="#gotowkowy">Kredyt Gotówkowy</a></li>
  66. </ul>
  67.  
  68. <div id="hipoteczny">
  69. <form action="search.php" method="POST" id="form1" class="formularz">
  70. <div>
  71. Cel kredytu:
  72. <select name="cel_kredytu" id="wybor" onchange="onSelect(this);">
  73. <option value="1">Budowa domu</option>
  74. <option value="2">Zakup</option>
  75. <option value="3">Refinansowanie</option>
  76. <option value="4">Konsolidacja</option>
  77. <option value="5">Pożyczka</option>
  78. </select>
  79. </div>
  80. <div id="zakup">
  81. <div>
  82. Rynek:
  83. <select name="cel_kredytu" id="wybor">
  84. <option>Pierwotny</option>
  85. <option>Wtórny</option>
  86. </select>
  87. </div>
  88. <div>
  89. Przedmiot zakupu:
  90. <select name="cel_kredytu">
  91. <option>Mieszkanie</option>
  92. <option>Dom</option>
  93. <option>Działka</option>
  94. </select>
  95. </div>
  96. </div>
  97.  
  98. <div id="refinansowanie">
  99. <div>
  100. Przedmiot zakupu:
  101. <select name="cel_kredytu">
  102. <option>Mieszkanie</option>
  103. <option>Dom</option>
  104. <option>Działka</option>
  105. </select>
  106. </div>
  107. </div>
  108.  
  109. <div id="konsolidacja">
  110. <div>
  111. Rynek:
  112. <option>Pierwotny</option>
  113. <option>Wtórny</option>
  114. </select>
  115. </div>
  116. <div>
  117. Przedmiot zakupu:
  118. <select name="cel_kredytu">
  119. <option>Mieszkanie</option>
  120. <option>Dom</option>
  121. <option>Działka</option>
  122. </select>
  123. </div>
  124. <div>
  125. Suma kredytów konsumpcyjnych: <input type="text" name="okres" />
  126. </div>
  127. </div>
  128.  
  129. <div id="pozyczka">
  130. <div>
  131. Przedmiot zabezpieczenia:
  132. <select name="cel_kredytu">
  133. <option>Mieszkanie</option>
  134. <option>Dom</option>
  135. <option>Działka</option>
  136. </select>
  137. </div>
  138. </div>
  139.  
  140. <div>
  141. Wartość nieruchomości: <input type="text" name="wartosc" />
  142. </div>
  143. Kwota kredytu: <input type="text" name="kredyt" />
  144. <br />
  145. Waluta:
  146. <select name="waluta">
  147. <option>PLN</option>
  148. <option>EURO</option>
  149. <option>USD</option>
  150. <option>CHF</option>
  151. </select>
  152. <br />
  153. Rodzaj rat:
  154. <select name="raty">
  155. <option>stałe</option>
  156. <option>malejące</option>
  157. </select>
  158. <br />
  159. Okres kredytowania: <input type="text" name="okres" />
  160. <br />
  161. Wiek najstarszego kredytobiorcy: <input type="text" name="wiek" />
  162. <br />
  163. <input type="submit" value="Szukaj!" />
  164. </form>
  165.  
  166.  
  167. </div>
  168. </body>
  169. </html>]


Wszystko fajnie, pięknie, ale po pierwszym wejściu na stronę z tym formularzem pojawiają się wszystkie pola formularza, dopiero po wybraniu konkretnego celu kredytowanie pojawiają się/znikają odpowiednie pola formularza. To samo dzieje się po odświeżeniu strony.

Pytanie moje jest takie:
Czy da się w JS/HTML ustawić jakieś wartości by domyślnie nie wyświetlał wszystkich pól tylko to co trzeba.
Każdy pomysl się liczy.

Z góry dziękuję za sugestie.

Pozdrawiam! smile.gif
b4rt3kk
Te rzeczy, które na początku mają być ukryte to musza mieć ustawione w css display: none;
David_Rook
Ok, jak wrócę z pracy to przetestuje.

Czyli mam rozumieć, że kod JavaScript ma jakby wyższość nad CSS?
Jeśli dam atrybut
  1. dispaly: none;
to przy wybraniu odpowiedniego rodzaju kredytu kod JavaScript zamieni to? smile.gif
styryl
To nie jest kwestia "wyższości", przeczytaj

http://pl.wikipedia.org/wiki/JavaScript

Aby ułatwić sobie pracę zainteresuj się jakimś frameworkiem javascript np jquery.
zegarek84
jQ to on już ma dołączony ;]

na to co teraz zrobiłeś i widzę jak chcesz zrobić to wywołaj po prostu tą funkcję onSelect z odpowiednim atrybutem po zdefiniowaniu funkcji (czyli za nią), możesz to zrobić na 2 sposoby - albo wywołać tigger change w jq albo surową funkcję z atrybutem:
[JAVASCRIPT] pobierz, plaintext
  1. $(function(){$('#wybor').change()});
[JAVASCRIPT] pobierz, plaintext

[JAVASCRIPT] pobierz, plaintext
  1. $(function(){onSelect($('#wybor')[0])});
[JAVASCRIPT] pobierz, plaintext


z wywoływania $(function(){}) możesz zrezygnować o ile wywołujesz skrypt za tymi elementami DOM (będą już utworzone) - fakt, wszystko mogłeś ukryć na początku w CSS ale skoro masz do tego funkcję to możesz teraz z niej skożystać...
David_Rook
Tylko właśnie o to chodzi, że nie za bardzo znam jQuery... (Umiem tylko użyć gotowych szablonów ze strony jQuery UI...)

A tak jak mam teraz w JavaScript po prostu nie może być?

I dzięki za podpowiedź z tym ukrywaniem w css, wszystko działa smile.gif
b4rt3kk
Nie ma co kombinować, najprostsze rozwiązanie jest zazwyczaj najlepsze.
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.