Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generowanie inputów
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
dyktek
Cześć,
szukam kodziku javy, który zrealizuje taką rzecz

mam pole select

  1. <select name="ilosc" ><option value="1">1</option><option value="2">2</option><option value="3">3</option></select>


no i chciałem zrobić coś takiego że jesli user wybierze 3 to bez przeładowania pojawią się trzy pola input generalnie chodzi o to zeby wyswietlało mi tyle pol input ile user wybierze.

z góry dzieki za pomoc
mike
1. "Mały problemik" :?: A co nam to mówi. Proszę o temat na PW związany z problemem to otworzę.
2. Java != Javascript

----edit----
Otwieram.
dyktek
doszedłem do takiego stanu:

  1. <script language="JavaScript" type="text/javascript">
  2. <!--
  3. function axt(id){
  4. document.getElementById('tab1').style.display = 'none';
  5. document.getElementById('tab2').style.display = 'none';
  6. document.getElementById('tab3').style.display = 'none';
  7. document.getElementById('tab4').style.display = 'none';
  8. document.getElementById('tab5').style.display = 'none';
  9. document.getElementById('tab6').style.display = 'none';
  10. document.getElementById(id).style.display = 'block';
  11. }
  12. //-->
  13.  
  14.  
  15. <select name="ilosc" onchange="javascript:axt('tab')"><option value="1">1</option><option value="2">2</option><option value="3">3</option></select>
  16.  
  17.  
  18. <div id="tab1">
  19. bla bla bla 11111111
  20. </div>
  21. <div id="tab2" style="display: none;">
  22. bla bla bla 22222222222
  23. </div>
  24. <div id="tab3" style="display: none;">
  25. bla bla bla 3333333333
  26. </div>
  27. <div id="tab4" style="display: none;">
  28. bla bla bla 4444444444
  29. </div>
  30. <div id="tab5" style="display: none;">
  31. bla bla bla 55555
  32. </div>
  33. <div id="tab6" style="display: none;">
  34. bla bla bla 666666666
  35. </div>


i nie wiem jak zrbić aby tutaj onchange="java script:axt('tab')" wstawiało po tab1 lub tab2 lub tab3 w zaleznosci od wyboru z selecta
revyag
Kod
<script type="text/javascript">
function iadd(count) {
    var elems = new Array();
    for(var i=0; i < count.options[count.selectedIndex].value;i++) {
        elems[i] = document.createElement("input");
        elems[i].type="text";
        elems[i].name="i"+i;
        document.getElementById("inputs").appendChild(elems[i]);
        document.getElementById("inputs").appendChild(document.createElement("br"));
    }
}
</script>

  1. <select id="s" name="s" onchange="iadd(this)">
  2. <option value="1">1</option>
  3. <option value="2">2</option>
  4. <option value="3">3</option>
  5. <option value="4">4</option>
  6. </select>
  7. <div id="inputs">
  8.  
  9. </div>
dyktek
fajne rozwiązanie dzięki, a jest jeszcze możliwość dorobienia do tego takiego motywu ze jak klikam na 3 to pojawiają sie 3 inputy ale jak klikne jeszcze raz na 2 do do tych 3 dodaje kolejne dwa i razem jest juz 5 wiec gdy ktos wybierze zle pole z selecta i będzie chciał poprawiać do sie mnozyc będą te inputy cały czas
revyag
Możesz sobie dodać buttona,który to skasuje np. tak:
Kod
function iclear() {
    var inputs = document.getElementById("inputs");
    while(inputs.hasChildNodes()) {
        inputs.removeChild(inputs.childNodes[0]);
    }
}

  1. <input type="button" onclick="iclear()" value="clear" />
dyktek
dzięki działa cool.gif ale mam jeszcze jeden problem z tym kodem
chodzi o to ze zrobiłem sobie to tak

Kod
function iadd(count) {
   var elems = new Array();
   for(var i=0; i < count.options[count.selectedIndex].value;i++) {
       elems[i] = document.createElement("input");
       elems[i].type="text";
       elems[i].name="godzina"+1;
       document.getElementById("inputs").appendChild(elems[i]);
       document.getElementById("inputs").appendChild(document.createElement("br"));
   }
}


czyli pierwszy input nazywa sie godzina1 wiec kolejny powinien sie nazywać godzina2 godzina3 itd... jednak jak wypełnie np. 5 inputów to zawsze odebrać mogę tylko tego ostatniego a pozostałe są puste
revyag
Kod
elems[i].name="godzina"+(i+1);

Tak będzie dobrze, u Ciebie wszystkie inputy mialy tę samą nazwę.
Bo jedynka jako liczba przecież się nie będzie sama z siebie inkrementować snitch.gif Do nazwy trzeba dodać zmienną która zwiększa swoją wartość.
dyktek
spoko dzięki smile.gif
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.