 <p>There are a number of ways to archive this. One easy way is to submit all data to the server, where the whole form gets rebuild. Doing this on javascript-side could be done with templating (I assume you use jquery).</p> <p>The serverside-solution (as the final submitting) requires, that your input-names are formed wisly.</p> <p>Example:</p> <pre><code>data[members][{$memberId}][name] </code></pre> <p>If you want to determine, if the form was submitted in its final form, or just to add a member, you can form the submit-buttons like this:</p> <pre><code>&lt;input type="submit" name="btn[submit]" value="submit booking" /&gt; &lt;input type="submit" name="btn[add]" value="submit booking" /&gt; </code></pre> <p>On php-side this could be determined by:</p> <pre><code>$btnType = isset($_REQUEST['btn']) &amp;&amp; is_array($_REQUEST['btn']) ? array_shift(array_keys($_REQUEST['btn'])) : 'submit'; </code></pre> <p>There are still improvements to apply!</p>