mehre formulare auf einmal versenden / array problem
mat
- javascript
Hallo,
hoffe einer kann mir bei meiner frage helfen. es ist ein bisserl php mit javascript gemischt, wobei ich nur fragen zum javascript-teil habe.
sinn und zweck dieser übung ist das versenden von mehreren formularen auf einmal. ich habe mein original-skript hier etwas vereinfacht, damit man es nachvollziehen kann.
zuerst wird per php die javascript-funktion combineAndSend() im head geschrieben.. diese rufe ich dann im formular 'sendForm' auf, um die formularfelder aus den anderen formularen in ein hidden field in 'send form' zu speichern, um dieses dann zu übergeben.
ich möchte dies mit einem array tun. nur leider wird der code so nicht ausgeführt. die javascript console im mozilla sagt:
Error: document.sendForm.picture has no properties
Line: 5
ich denke mal, ich hab da ein problem mit der zusammenstellung des arrays im head-teil.
Kann mir Jemand helfen?
<html>
<head>
<script language=javascript>
<!--
function combineAndSend() { <?
for ($i = 0; $i < 3; $i++) { ?>
document.sendForm.picture[<? echo $i ?>]['picName'].value = document.form<? echo $i ?>.picName.value; <?
} ?>
document.sendForm.submit();
}
//-->
</script>
</head>
<body> <?
for ($i = 0; $i < 3; $i++) { ?>
<form name="form<? echo $i; ?>">
<input type="text" name="picName">
</form> <?
} ?>
<form name ="sendForm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get" onSubmit="combineAndSend()" > <?
for ($i = 0; $i < 3; $i++) {?>
<input type="hidden" name="picture[<? echo $i ?>][picName]" > <?
} ?>
<input type="submit" /><? echo "\n"; ?>
</form>
</body>
</html>
Danke
mat
hi,
Error: document.sendForm.picture has no properties
document.sendForm.picture[<? echo $i ?>]['picName'].value = [...]
hier versuchst du, auf eine collection namens picture innerhalb deines formulares zuzugreifen.
ein solche gibt es aber nicht.
for ($i = 0; $i < 3; $i++) {?>
<input type="hidden" name="picture[<? echo $i ?>][picName]" >
hier erzeugst du mehrere inputs mit namen wie picture[0][picName].
daraus erstellt javascript aber natürlich keine collection picture[] unterhalb des form-objektes, so wie du es weiter oben wohl voraussetzt.
schau dir mal http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines an - das sollte dein problem lösen, wenn du darüber hinaus noch weißt, dass man für # dort statt der nummer der elemente im dokument auch ihre jeweiligen namen einsetzen kann.
gruß,
wahsaga
hallo,
und danke für deine schnelle hilfe und deine anregung. ich hatte das schon mal gelesen (dein link), nur erinnert hab ich mich nicht ;)
ich habe die zeile nun wie folgt ausgetauscht:
statt
document.sendForm.picture[<? echo $i ?>]['picName'].value = document.form<? echo $i ?>.picName.value;
nun
document.sendForm.elements['picture[<? echo $i ?>][picName]'].value = document.form<? echo $i ?>.picName.value;
gruß
mat