Assoziative Formularfelder (speziell hidden fields) per JavaScript setzen

Killerkarpfen_hh79

Grünschnabel
Moin Leute, hätt da ma ne Frage!

Also ich will ein assoziatives Hidden Field per JavaScript steuern, um so Parameter an mein PHP-Skript weiterzugeben.

Wenn ich jetzt z.B. folgendes Feld als assoziatives Array hab, wird es im _POST als assoziatives Array übergeben, Ihr kennt das ja sicherlich schon für Checkboxen:

<html>
<body>
<form name="frm" action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
<input type="hidden" name="test[bla]" value="1"/>
<input type="hidden" name="test[blubb]" value="2"/>
<input type="submit" name="btn_submit" value="ok"/>
</form>
<pre>
<? var_dump($_POST);?>
</pre>
</body>
</html>


Wenn ich das Formular abschicke, sieht das _POST array folgendermassen aus:

array(2) {
["test"]=>
array(2) {
["bla"]=>
string(1) "1"
["blubb"]=>
string(1) "2"
}
["btn_submit"]=>
string(2) "ok"
}


Wie Ihr seht, funktioniert das und ist recht praktisch.

Ich will nun aber per JavaScript den Wert eines Elements in diesem Hidden Field ändern, d.h.

document.forms[0].test['neu']='wert';


Das scheint aber so nicht zu funktionieren. Hat vielleicht jemand von euch eine Idee, wie man das Problem lösen könnte?
 
Sofern ein Element mit dem Namen "test['neu']" existiert schon existiert:
Code:
document.forms[0].elements["test['neu']"].value = 'wert';
oder
Code:
document.getElementsByName("test['neu']")[0].value = 'wert';
vielleicht geht's auch, wenn du bei deinem Befehl das value am Ende nicht vergisst :rolleyes:

Wenn keins existiert musst du zuerst die DOM-Methoden createElement() und appendChild() benutzen.
 
Zuletzt bearbeitet:
Hey danke für die schnelle Antwort!

Das mit dem Value hab ich im richtigen Skript natürlich nicht vergessen, bloss hier in der Hektik ;)

Also wenn das Element test[laber] existiert, dann es so:

<input type="button" name="test" onclick="document.forms[0].elements['test[laber]'].value='dskhdjshdjshds';"/>

Das Problem ist nur die Dynamik, ich will diese Elemente schon dynamisch erzeugen. Das ganze gehört zu nem kleinen Application Framework, wenn man das schon so nennen darf, was ich grad mit PHP entwickle, wo Funktionen mit ihren Parametern halt automatisiert aufgerufen werden und das Hauptskript sozusagen den Funktionsnamen aus Parametern aus GET bzw POST und die dazugehörigen Parameter generiert.

Werd mir aber gleich nochmal was zu createElement und appendChild angucken, danke!
 
Hi,

hier die Lösung für das dynamische Erzeugen des hidden fields:

function test()
{
var hidden_field=document.createElement("input");
var type=document.createAttribute("type");
var name=document.createAttribute("name");
var value=document.createAttribute("value");
type.nodeValue="hidden";
name.nodeValue="test[bla]";
value.nodeValue="test";
hidden_field.setAttributeNode(type);
hidden_field.setAttributeNode(name);
hidden_field.setAttributeNode(value);
document.getElementById("frm").appendChild(hidden_field);
}
 

Neue Beiträge

Zurück