javascriptem přidané inputy nejdou do POST
- ike
- Člen | 14
Zdravím všechny,
mám jen dotaz, jestli můj problém je problém nebo normální chování.
V šabloně mám tabulku s id=polozky a k ní potřebuju dynamicky přidat
řádky s inputy. Snažím se to pořešit přes JS pomocí appendChild, což
vše funguje OK.
Ale pokud se pokusím odeslat formulář, prvky přidané JS se neodešlou.
Pokud si nechám vypsat dump($_POST), objeví se jenom nadefinované prvky
v presenteru.
Zkoušel jsem i Replicator, ale ten mi moc nevyhovuje i když chodí. Jde mi spíš o chování JS.
- jakub.barta
- Člen | 10
Mohla by ti pomoc metoda formu getHttpData(), ktera vrati i hodnoty, ktery formu dynamicky pridas
- David Matějka
- Moderator | 6445
pokud nejsou v _POST, tak mas pravdepodobne chybu v tvem JS. Prirazujes ten
input pod <form>
a natavujes mu jmeno?
- ike
- Člen | 14
Ve formuláři to je. V šabloně je {form xxxx}, v něm je vytvořená tabulka s id=polozky. V JS se vše přiřazuje jako appendChild k této tabulce.
JS zkráceně:
<script>
function addRow(element) {
var x = document.getElementById("polozky");
var itemTR = document.createElement('TR');
x.appendChild(itemTR);
</script>
- ike
- Člen | 14
vše v JS funguje, hodnoty se doplňují, inputy se přidávají, jediný problém je v tom, že nejsou v POSTu.
LATTE
<table name=„polozky“ id=„polozky“ border=„0“ cellspacing=„0“
width=„100%“ cellspacing=„10“ cellpadding=„5“>
</table>
volání JS v presenteru:
<?php
$form->addSelect("sklad_karty", "", $karty,10)
->setAttribute("class","big bigList")
->setAttribute("ondblclick", "addRow(this,0)");
?>
funkce.js (načtená správně, všechny funkce pracují jak mají)
<script>
function addRow(element, todo) {
var x = document.getElementById("polozky");
var itemTR = document.createElement('TR');
var itemTD1 = document.createElement('TD');
itemTD1.id="TD1";
itemTD1.style.verticalAlign="middle";
var itemInputNazev = document.createElement("input");
itemInputNazev.type = "text";
itemInputNazev.id = "addNazev";
itemInputNazev.className = "big";
itemInputNazev.value="pokusná hodnota";
itemTD1.appendChild(itemInputNazev);
itemTR.appendChild(itemTD1);
x.appendChild(itemTR);
}
</script>