It is pretty common for a form to have a singular submit button. If the user
clicks 'Submit', then the form fires a POST
off to the server, the server can
process the request, and that's it.
But what about a form that has two or more buttons? For instance, imagine some kind of consent form where the user needs to either Accept or Reject some terms.
Just like other inputs, the <button>
tag can take both name
and value
attributes.
<form action="/terms" method="post">
<p>Something about the terms ...</p>
<div>
<label for="name">Email: </label>
<input type="email" name="email" id="email" required>
</div>
<div>
<button type="submit" name="commit" value="accept">Accept</button>
<button type="submit" name="commit" value="reject">Reject</button>
</div>
</form>
In addition to the email
attribute, when the user submits the form, it will
include a commit
attribute that has a value of either 'accept'
or
'reject'
.
Naming it commit
is a convention I'm borrowing from Rails's form
helpers.
You can name it whatever makes sense to you.