Autor Zpráva
michal-nereg09
Profil *
ahoj,

mám problém s doplňováním formulářových polí pomocí javascriptu.

Mám formulář, s možností vyplnit jméno, příjmení.... po kliknutí na odkaz chci, aby se přidalo další pole jméno, příjmení. To mi funguje, nicméně se smaže předchozí vyplnné jméno a příjmení....

     <script type='text/javascript'> 

  function pridejInput() { 

document.getElementById('formular').innerHTML += "<tr><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>Jméno</td><td><input type = 'text' name = 'form[jmeno][]'></td></tr><tr><td>Příjmení:</td><td><input type = 'text' name = 'form[prijmeni][]'></td> </tr><tr><td>Narození:</td><td><input type = 'text' name = 'form[rok][]'></td>  </tr><tr><td>Položka:</td><td><input type = 'text' name = 'form[polozka][]'></td></tr>";
 

  } 

</script> 

 <a href='#' onClick='pridejInput();return false;'>Přidat další formulářovou položku</a>






a v tagu formular mam pak ještě jednou to samé jako se vkládá přes javascript, aby to tam bylo hned při načtení.

poradí mi prosím někdo?

díky
camo
Profil *
Hmm, tak to som aj ja zvedavý prečo to robí.
Skús pre začiatok zmazať to plusko +=, ale to ma len tak napadlo.
michal-nereg09
Profil *
to určitě ne, to by pak jen nahradilo stávající text.

viděl bych to na problém s tím že odesílám pole[jmeno][], ale já to takhle odesílat musím, jinak bych to nezpracoval...
Chamurappi
Profil
Reaguji na michal-nerega09:
Prosím o odkaz na živou ukázku.
Explorer nepodporuje zápis do innerHTML tabulkových elementů (vyjma buněk).
_es
Profil
Chamurappi
Ja som to pochopil tak, že mu to pridanie nového prvku funguje, no nezachová sa text vpísaný užívateľom do predchádzajúcich prvkov.
Takže by mal michal-nereg09 nové prvky vkladať inak ako cez innerHTML, alebo predtým vpísaný text ešte nakoniec zapísať do elementov.
Chamurappi
Profil
Reaguji na _es:
Ja som to pochopil tak, že mu to pridanie nového prvku funguje
Také jsem pochopil, že si stěžuje na něco jiného, ale na mnou uvedený problém by stejně býval narazil, kdyby průběžně testoval svoji práci ve více prohlížečích.

Takže by mal michal-nereg09 nové prvky vkladať inak ako cez innerHTML
Ano, tím vyřeší oba problémy.
Stačí, když bude metodami DOMu vytvářet jen řádky a buňky, do innerHTML buněk už může zapisovat spolehlivě.
camo
Profil *
Čo tak skúsiť čosi ako:
onClick="pridejinput()"
 
pridejinput()
{
imp=new text[]
document.getelementById('formular').innerHTML=imp
}


???
camo
Profil *
a samozrejme treba zvážiť bodkočiarky kt. tam nemám a to, čo napísal Chamurapi o innerHTML.
michal-nereg09
Profil *
Chamurappi: faktem je, že jsem to otevíral jen ve firefoxu. Celé řešení jsem zkopíroval z nějakého tutorialu, javascriptu moc neholduju. V IE to nefunguje skutečně vůbec :)

Ok, tj jak to mám přesně zkonstruovat? nějak jsem přesně nepochopil to s tím innerhtml, díky

živá stránka:

http://mixpult.com/entry2.php

je to v podstatě plugin do wordpressu, osekal jsem to, takže je to jenom ten javascript.
camo
Profil *
michal-nereg09:
No tak som skúsil odstrániť tú tabuľku + som doplnil pár úvodzoviek a funguje mi to tak, ako si to chcel.

to all:
Môže mi niekto prosím vás vysvetliť, prečo sa za innerHTML píše += a nie len =???
No a ešte, prečo sa dlhý string v JS nemôže rozdeliť do dvoch riadkov??? (asi by som si mal zopakovať základy syntaxu JS, že?)
Vďaka!

Tu je ten výsledok:
<body style="text-align:center">
<div style="margin:auto; ">

<script type='text/javascript'>

  function pridejInput() {

           document.getElementById('lide').innerHTML += "meno: <input type = 'text' name = 'prihlaska[jmeno][]'><br /><br />priezvisko: <input type = 'text' name = 'prihlaska[prijmeni][]'> <br /><br />narodeny/a: <input type = 'text' name = 'prihlaska[rok][]'> <br /><br />kategoria: <input type = 'text' name = 'prihlaska[kategorie][]'> <br /><br /><br />" ;

                         }

</script>

<form method=post>
             <div id='lide'>
                   meno: <input type = 'text' name = 'prihlaska[jmeno][]'> <br /><br />
						 priezvisko: <input type = 'text' name = 'prihlaska[prijmeni][]'> <br /><br />
						 narodny/a: <input type = 'text' name = 'prihlaska[rok][]'> <br /><br />
						 kategoria: <input type = 'text' name = 'prihlaska[kategorie][]'> <br /><br /><br />
             </div> 	 <br /><br />

						 <input type='button' value='pridej' onClick='pridejInput();return false;'>
                   <input type='submit' name='odeslat' value='prihlasit'>
</form>
</div>
</body>
michal-nereg09
Profil *
+= protože tam chci stávající řetězec a ještě něco přidat.

takhle mi běhá zase jen v IE...
Camo
Profil
No jo, PsPad má predvolený IE a vo FF mi to tiež nefunguje. Na to ti bude musieť odpovedať niekto iný.
A po tom, čo som si s tým tvojím scriptom vytrpel, som už aj ja zvedavý, prečo to nefunguje?

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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