Autor Zpráva
lukame
Profil *
Zdravíčko,
nevíte jak mám zjistit resp. nastavit name inputu při přidávání či odebírání řádků formuláře viz.:
jsfiddle.net/7AeDQ
?
Díky.
_es
Profil
lukame:
Vlastnosť name inputu zistíš „prekvapivo“ z výrazu objektInputu.name. A „nastavíš“ ho, tiež „prekvapivo“, príkazom objektInputu.name = "novýNázov";.
lukame
Profil *
Asi jsem se do toho nějak zamotal. Jak píšeš, takto jsem to měl:
inp2.name = 'jmeno['+len+']'; nebo taky inp1.setAttribute("name",'jmeno['+len+']');

Podle všeho (např. alert) se name inputu nastaví správně (např. jmeno[2]), ale když přeš form odešlu proměnnou, tak už echo $_POST["jmeno"][2]; je nedefinováno. Jestli to dobře popisuji. Prostě name se zřejmě nastaví správně, ale po odeslání formuláře input nenajdu.


Prostě nemohu najít input, kterému jsem dal name přes JS.
lukame
Profil *
No mám pro zjednodušení odesílání formulářem:

<form method="post" action="bb.php">
<table id="POITable" >
            <td>1.</td>
            <td> <input type="text" name="jmeno[1]" value=""  ><input type="button" value="Přidat" onclick="insRow()"/> </td>
  </table>
   <input  type="submit" value="test">
</form>

a javascript


 function deleteRow(row)
{
    var i=row.parentNode.parentNode.rowIndex;
    document.getElementById('POITable').deleteRow(i);
}


function insRow()
{
    console.log( 'hi');
    var x=document.getElementById('POITable');
    var new_row = x.rows[1].cloneNode(true);
    var len = x.rows.length;
    new_row.cells[0].innerHTML = len;
    
    var inp1 = new_row.cells[1].getElementsByTagName('input')[0];
    inp1.id += len;
    inp1.setAttribute("name",'jmeno['+len+']');
    inp1.value = inp1.name;

        
   
    var inp2 = new_row.cells[2].getElementsByTagName('input')[0];
    inp2.id += len;
    inp2.name  = 'prijmeni['+len+']';
    inp2.value ='prijmeni['+len+']';
    
      new_row.cells[3].getElementsByTagName('input')[0].removeAttribute('style');
    x.appendChild( new_row );
}


Když po oedeslání formuláře si chci vypsat pole jmeno: tak mi to vypíše pouze jenom jmeno[1]. Zbytek přidaných řádků nevypíše nic.
_es
Profil
lukame:
nebo taky inp1.setAttribute("name",'jmeno['+len+']');
To nie je to isté: Doporučuji užívat standardní vlastnosti HTML DOMu místo getAttribute/setAttribute.

Ten input je akého „typu“? Ak typu „text“, tak nie je dôvod, prečo by malo byť viac takých inputov s rovnakým name.
lukame
Profil *
Input je text a a právě že an nechci, aby byly stejné name. Pokud ale přidávám řádky jako input, tak name použiji jako Pole, ale prostě name z JS vůbec nejde přečíst přes POST
_es
Profil
lukame:
Kde máš v HTML kóde tabuľky vôbec nejaký riadok (značku <TR>)?
Prečo sa odkazuješ na druhý riadok tabuľky (x.rows[1]) - čo ak bude v tabuľke len jeden riadok?
lukame
Profil *
TR ve svém kódu mám. Zde jsem vložil nějaký očesaný kód. ALe tabulky mi fungují. V tom problém nemám. Jak jsem psal výše, nejde mi to pojmenování inputů přes JS.
_es
Profil
lukame:
nejde mi to pojmenování inputů přes JS.
To funguje tak, ako som popísal už v [#2], takže ak „nejde“, tak to bude niečim iným, než že by nefungovalo priradenie do vlastnosti name objektu elementu inputu. Mimochodom, nikde nevidím, že by si tak niekde robil, ani v „ukážke“ v [#1], ani v kóde v [#4]. V oboch prípadoch sú rôzne iné ďalšie chyby, takže je ťažké vyveštiť, kvôli čomu všetkému to nefunguje v „skutočnej situácii“. Napríklad tlačítko z [#1] nemá priradenú nijakú udalosť a pod.

Podle všeho (např. alert) se name inputu nastaví správně (např. jmeno[2]), ale když přeš form odešlu proměnnou, tak už echo $_POST["jmeno"][2]; je nedefinováno. Jestli to dobře popisuji. Prostě name se zřejmě nastaví správně, ale po odeslání formuláře input nenajdu.
Možno ti poradí lepšie niekto „od PHP“, no zdá sa mi, že na to, aby to bolo v poli (v PHP), tak musí byť name prvkov rovnaké a to name="jmeno[]", nie name="jmeno[0]", name="jmeno[1]"...
Keeehi
Profil
_es:
tak musí byť name prvkov rovnaké a to name="jmeno[]", nie name="jmeno[0]", name="jmeno[1]"...
Stoprocentně jistý si nejsem, ale je velmi pravděpodobné, že přímo uvedení indexu PHP vadit nebude. První varianta určitě funguje, to ozkoušeno je.
_es
Profil
Keeehi:
přímo uvedení indexu PHP vadit nebude.
Ale „nebude vadiť“ spôsobom, že bude fungovať $_POST["jmeno[2]"], no bude fungovať $_POST["jmeno"][2], čo skúša lukame? (Netuším, len tipujem možnú príčinu problému)

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: