Autor Zpráva
gogo.x
Profil *
nevěděl by někdo prosím jak udělat dynamicky generovaný input jako je např. u emailu na seznam.cz

jde o to, že potřebuju, když se klikne přidat další input, tak aby se na stránce udělal input, ale aby měl jiné id, než ten předchozí

po prvním kliknutí se tam přidá např. <input type="text" id="1">
při druhém kliknutí <input type="text" id="2">
při třetím <input type="text" id="3">

atd.

ať hledám jak hledám, nemůžu nic takového najít.

děkuji všem za pomoc
habendorf
Profil
KW: createElement, appendChild
gogo.x
Profil *
habendorf:
diky moc za odpověď ale to nevím co s tím
habendorf
Profil
KW je zkratka pro keywords, tedy klíčová slova. Napsal jsem ti je tam, abys věděl, co máš hledat. Pak už je to na tobě :o)
gogo.x
Profil *
aha, díky moc, už jsem něco našel a upravil to, ale mám dva problémy

1) potřeboval bych vědět jaká je hodnota name
2) nevím proč se mi ty inputy přidávají až po tlačítko

tady je kód:

<script type="text/javascript">   
  
var num_of_lines = 0;   
  
function plus(element){

    num_of_lines ++;   
       
    var x = document.getElementById( element );   
       
    var input = document.createElement('input');   
    input.setAttribute('name', 'input[]' );   

  
    var p = document.createElement('span');   
    p.setAttribute('id', 'span_' + num_of_lines );   
       
    var br = document.createElement('br');   

    p.appendChild(input);   
  
    p.appendChild(br);   
       
        x.appendChild(p); 
        
 
}          
  
function minus(element){   
    if( num_of_lines < 1 )   
        return;   
           
    var d = document.getElementById( element );   
    var olddiv = document.getElementById( 'span_' + num_of_lines );   
    num_of_lines--;   
    d.removeChild(olddiv);   
       
}        
</script>   
  
  
<a href="#" onclick="plus('new_sab'); return false;" >pridat</a> <br> <a href="#" onclick="minus('new_sab'); return false;" >odebrat</a><br />   
    
  
<form method="post" action="vysledek.php" id="new_sab">   
<div>   
</div>
<input type="submit">  <br /> 
</form>   
gogo.x
Profil *
tak už jsem vyřešil jeden problém, sice asi ne moc elegantně, ale aspoň že to funguje

kdyby někdo tápal stejně jako já, tak hodnotu name jsem vyřešil takhle:

input.setAttribute('name', 'i' + num_of_lines ); 


namísto

input.setAttribute('name', 'input[]' ); 


a výsledkem jsou formuláře, kde name je: i1, i2, i3 ....

ale s tím nastává i nový problém

nevíte někdo jak udělat skryté pole, kde by byla hodnota kam až to jde?

když budou 3 inputy tak aby v něm byla 3
???
_es
Profil
gogo.x:
hodnotu name jsem vyřešil takhle:

Jednoduchšie asi bude:
input.name = 'i' + num_of_lines;

Namiesto premennej num_of_lines by bolo asi lepšie zisťovať skutočný počet príslušných elementov.
Pri nejakej chybe by sa tá premenná mohla rozísť so skutočnosťou.
gogo.x
Profil *
_es:
díky za radu, zkusím s tím něco vymyslet, ale to je v podstatě už jen kosmetická úprava
teď mě mnohem víc trápí proč se mi to přidává až za ten submit
a nevím si rady s tím inputem, kde by byla hodnota num_of_lines

zatím to řeším takhle:

    var hid = document.createElement('input');   
    hid.setAttribute('name', 'hid');
    hid.setAttribute('value', num_of_lines);  


ale to mi pokaždé přidá nový input a já bych potřeboval aby tam byl jen jeden a v tom se měnila ta hodnota
habendorf
Profil
gogo.x:
ale to mi pokaždé přidá nový input a já bych potřeboval aby tam byl jen jeden a v tom se měnila ta hodnota

Tak ho navaž až na onsubmit.

Místo setAttribute bych dal
hid.value=num_of_lines;
_es
Profil
gogo.x:
proč se mi to přidává až za ten submit
Ak si v tom svojom kóde klikneš ne nejaké "slovo", tak v tej dokumentácii možno prídeš na nejakú metódu, ktorá sa ti zíde, napríklad insertBefore.

ale to mi pokaždé přidá nový input a já bych potřeboval aby tam byl jen jeden a v tom se měnila ta hodnota
Tak ak nechceš pridať nový element, tak ho nepridávaj a uprav ten existujúci metódami na to určenými.
Nedá sa súčasne aj hádať čo asi chceš aj radiť.
Skús si lepšie pozrieť nejaké metódy a vlastnosti v tej dokumentácii (Mozilly).
gogo.x
Profil *
tak

_es:
Tak ak nechceš pridať nový element, tak ho nepridávaj a uprav ten existujúci metódami na to určenými.
Nedá sa súčasne aj hádať čo asi chceš aj radiť.
Skús si lepšie pozrieť nejaké metódy a vlastnosti v tej dokumentácii (Mozilly).

no to bych rád, ale když nevím co mám hledat, tak se to hledá těžko
mohl bys mi teda prosím říct, jak ten element místo přídání upravit?
díky
_es
Profil
gogo.x:
Tu máš vlastnosti a metódy toho elementu:
https://developer.mozilla.org/en/DOM/Input
Zrejme ťa najviac bude zaujímať vlastnosť value.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0