Autor | Zpráva | ||
---|---|---|---|
Radimek Profil * |
#1 · Zasláno: 21. 6. 2011, 15:27:23
Dobrý den,
potřeboval bych poradit, jak udělat toto: Uživatel si v selectu s názvem "pocet" vybere např. číslo 50 a JS vygeneruje 50 inputů. Jak na to? Děkuji |
||
Jozin Profil |
#2 · Zasláno: 21. 6. 2011, 15:45:04
Zdravím,
pokud to hodláš dělat pomocí js, tak bych možná spíš použil odkaz (přidat další). To s tím počtem by bylo logické, kdyby se to odesílalo php-čku a ten to generoval. Jinak chceš jen radu, takže s tím co jsem teď napsal, tak svážeš odkaz s metodou onClick a v ní zavoláš nějakou funkci (sám si ji pojmenuješ). Tu funkci poté budeš mít někde nadefinovánu buď v externím js nebo v <script></script>. Tam pomocí DOM vložíš HTML tag input a nejspíš si přičteš 1 k nějaké proměnné i, která bude udávat kolikátý je to prvek. Stačí ti to takto? Jozin. |
||
Radimek Profil * |
#3 · Zasláno: 21. 6. 2011, 15:55:50
Ano, vím nyní to tak mám pomocí odkazu, ale podle me by bylo lepší, aby si uživatel počet inputů vybral v selectu. Nemusí pak totiž 50x klikat
|
||
_es Profil |
#4 · Zasláno: 21. 6. 2011, 16:01:11
Radimek:
Použiješ v nejakom cykle napríklad metódu appendChild. |
||
Jozin Profil |
#5 · Zasláno: 21. 6. 2011, 16:04:15
Radimek:
A nebude tedy rychlejší udělat to v PHP? Teen odeslaný formulář už nezabere o tolik víc času. |
||
Radimek Profil * |
#6 · Zasláno: 21. 6. 2011, 16:12:01
Jozin:
Ano, ale například když uživatel zjistí po 20ti minutách vyplňování inputů že mu např. 1 chybí, tak musí vše psát znova |
||
Jozin Profil |
#7 · Zasláno: 21. 6. 2011, 16:13:28
Radimek:
Tak tam jednoduše necháš ten odkaz. Prostě si vybereš dejme tomu 50 položek pak zjistíš, že ti 3 chybí, tak si 3x klepneš na odkaz. Co ty na to? |
||
Radimek Profil * |
#8 · Zasláno: 21. 6. 2011, 16:22:35
Vidíš, to mě nenapadlo, ale už jsem zkusil toto:
<script type="text/javascript"> function add(pocet) { while (i<=pocet) { var element = document.createElement("input"); element.setAttribute("type", "text"); element.setAttribute("value", pocet); element.setAttribute("name", "kolik"); var foo = document.getElementById("fooBar"); foo.appendChild(element); i++; } } </script> <form name="form" action="#"> <select name="element"> <option value="5">5</OPTION> </select> Ale nejde to a nevím proč :( <INPUT type="button" value="Add" onclick="add(document.forms[0].element.value)"/> <span id="fooBar"> </span> </form> |
||
Jozin Profil |
#9 · Zasláno: 21. 6. 2011, 16:28:20
Radimek
Nejde ti to, protože jako document.forms[0].element.value se buď nic nepošle a nebo to bude Add, protože máš form a né forms |
||
Radimek Profil * |
#10 · Zasláno: 21. 6. 2011, 16:31:30
<form name="form" action="#"> <select name="element"> <option value="5">5</option> </select> <INPUT type="button" value="Přidat" onclick="add(window.opener.document.forms['form'].elements['element'].value)"/> <span id="fooBar"> </span> </form> Takle by to už mělo jít, ale furt nic :( |
||
_es Profil |
#11 · Zasláno: 21. 6. 2011, 16:34:05 · Upravil/a: _es
Radimek:
Pridaj na začiatok funkcie: pocet = Number(pocet); i ani nastavenú jej hodnotu.
|
||
Radimek Profil * |
#12 · Zasláno: 21. 6. 2011, 16:47:13
Už mi to jde, ale šlo by udělat, aby se nepřidával jenom input ale k němu i nějaký text? Např. Jméno: <input>
function add(pocet) { var i=0; while (i<pocet) { var element = document.createElement("input"); element.setAttribute("type", "text"); element.setAttribute("value", ""); element.setAttribute("name", "kolik"+pocet); var foo = document.getElementById("fooBar"); foo.appendChild(element); i++; } } |
||
Tori Profil |
#13 · Zasláno: 21. 6. 2011, 17:15:54
Radimek:
„šlo by udělat, aby se nepřidával jenom input ale k němu i nějaký text?“ Nevím, je-li to nejlepší možnost, ale pomocí document.createTextNode() to jde určitě. Taky je metoda element.cloneNode() - stačí jen najít a klonovat první z těch inputů a vymazat v něm zadanou hodnotu. Jinak stačilo by nastavit pole jako jméno inputu (<input name="vstup[]">) - v PHP všechny tyhle inputy najdete jako číslované pole $_REQUEST['vstup']. V případě, že byste chtěl umět některé inputy zase odstranit si ušetříte práci s přečíslováváním. |
||
_es Profil |
#14 · Zasláno: 21. 6. 2011, 17:23:54
|
||
Časová prodleva: 13 let
|
0