|
Posted by Colin Fine on 09/24/06 20:12
Brad Everman wrote:
> I have an HTML form that passes arrays of values to PHP. Basically, each
> row of the form tracks three separate values for processing. I have a JS
> program that will dynamically add (or delete) rows to the form per the
> user. The problem is that these values are not passed when the form is
> submitted. If I hardcode the rows it works fine, so I know the processing
> code isn't the problem. My question is how can I dynamically add form rows
> via JS and have their values passed when the form is submitted? I
> attempted something like $_POST["document.something"] but that did not
> work.
>
> <SNIP>
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
> <title>Add/Remove child: Javascript</title>
> <script type="text/javascript">
> <!--
>
> function addEvent()
> {
> var ni = document.getElementById('myDiv');
> var numi = document.getElementById('theValue');
> var num = (document.getElementById("theValue").value -1)+ 2;
> //numi.value = num;
> var divIdName = "my"+num+"Div";
> var newdiv = document.createElement('div');
> newdiv.setAttribute("id",divIdName);
> newdiv.innerHTML = "Page Number: <input type=\"text\"
> name=\"pageNumber[]\"><br /><br />Paragraph Number: <input type=\"text\"
> name=\"paragraphNumber[]\"><br /><br />Instructions: <textarea
> name=\"instruction[]\" rows=\"5\" cols=\"80\"></textarea><br /><input
> type=submit value=\"Remove\"onclick=\"removeEvent(\'"+divIdName+"\')\"><br
> /><br />";
>
> ni.appendChild(newdiv); }
>
> function removeEvent(divNum)
> {
> var d = document.getElementById('myDiv');
> var olddiv = document.getElementById(divNum);
> d.removeChild(olddiv);
> }
>
> //-->
> </script>
> </head>
>
> <body>
> <input type=submit value="Add Row" id="theValue"
> onclick="addEvent();">
> <div id="main">
> <form>Page Number: <input type=\"text\"
> name=\"pageNumber[]\"><br /><br />Paragraph Number: <input type=\"text\"
> name=\"paragraphNumber[]\"><br /><br />Instructions: <textarea
> name=\"instruction[]\" rows=\"5\" cols=\"80\"></textarea>
>
> <div id="myDiv"> </div>
>
> </form>
>
> </body>
> </html>
>
> </SNIP>
When I've done this, it's never occurred to me to try and use the same
names for the inputs in the new rows as the existing rows: I've always
generated distinct names for each input.
I can see it would be easier to process it the way you are doing it: are
we sure that it works to add further inputs with the same names as
existing ones?
Colin
Navigation:
[Reply to this message]
|