Om alla formulären kan ha samma målsida kan man istället ha ett formulär med flera submitknappar, och helt slippa javascript. All data kommer att postas oavsett vilken knapp man trycker på, men det går att avgöra vilken knapp det var.
Variant 3 och 4 fungerar inte som önskat i IE6, i övrigt fungerar det i en ganska ny Firefox och IE6. Jag har inte testat andra webbläsare.
PHP-kod:
<pre>
<?php
print_r($_POST);
?>
Variant 1: input, samma namn
<form action="#" method="post">
Namn: <input type="text" name="name" />
<input type="submit" name="sub_but" value="Posta huvudformulär" />
Annat: <input type="text" name="annat" />
<input type="submit" name="sub_but" value="Gör något annat" />
Mer: <input type="text" name="mer" />
<input type="submit" name="sub_but" value="Posta huvudformulär" />
</form>
Variant 2: input, olika namn
<form action="#" method="post">
Namn: <input type="text" name="name" />
<input type="submit" name="sub_but1" value="Posta huvudformulär" />
Annat: <input type="text" name="annat" />
<input type="submit" name="sub_but2" value="Gör något annat" />
Mer: <input type="text" name="mer" />
<input type="submit" name="sub_but1" value="Posta huvudformulär" />
</form>
Variant 3: button, samma namn
<form action="#" method="post">
Namn: <input type="text" name="name" />
<button type="submit" name="sub_but" value="1">Posta huvudformulär</button>
Annat: <input type="text" name="annat" />
<button type="submit" name="sub_but" value="2">Gör något annat</button>
Mer: <input type="text" name="mer" />
<button type="submit" name="sub_but" value="1">Posta huvudformulär</button>
</form>
Variant 4: button, olika namn
<form action="#" method="post">
Namn: <input type="text" name="name" />
<button type="submit" name="sub_but1" value="1">Posta huvudformulär</button>
Annat: <input type="text" name="annat" />
<button type="submit" name="sub_but2" value="1">Gör något annat</button>
Mer: <input type="text" name="mer" />
<button type="submit" name="sub_but1" value="1">Posta huvudformulär</button>
</form>
</pre>
Jag skulle välja variant 2 och något i stil med:
PHP-kod:
if(isset($_POST['sub_but1'])) // Huvudformulär
{
...
}
else if(isset($_POST['sub_but2'])) // Mellanformulär
{
...
}
Problemet är att om man skulle posta genom att trycka på enter i "mellanformuläret" (om det nu finns något textfält där), så uppfattas det som om det är "huvudformuläret" som är postat.