Let's say you create a Wizard in an HTML form. One button goes back, and one goes forward. Since the back button appears first in the markup when you press Enter it will use that button to submit the form.
Example:
<form>
<!-- put your cursor in this field and press Enter -->
<input type="text" name="field1" />
<!-- This is the button that will submit -->
<input type="submit" name="prev" value="Previous Page" />
<!-- But this is the button that I WANT to submit -->
<input type="submit" name="next" value="Next Page" />
</form>
What I would like to do, is get to decide which button is used to submit the form when a user presses Enter. That way, when you press Enter the Wizard will move to the next page, not the previous. Do you have to use tabindex
to do this?
I would use Javascript to submit the form. The function would be triggered by the OnKeyPress event of the form element, and would detect whether the Enter key was selected. If this is the case, it will submit the form.
Here are two pages that give techniques on how to do this: 1, 2. Based on these, here is an example of usage (based on here):
I hope this helps. I'm just doing the trick of
float
ing the buttons on the right.This way the Prev button is left of the Next button but the Next comes first in the HTML code:
Edit: Benefits over other suggestions: no JavaScript, accessible, both buttons remain
type="submit"
Give your submit buttons same name like this:
When the user presses enter and the Request goes to server, you can check the value for
submitButton
on your server-side code which contains a collection of formname/value
pairs. For example in classic ASP:Reference: Using multiple submit buttons on a single form
If the fact that the first button is used by default is consistent across browsers, why not put them the right way round in the source code, then use CSS to switch their apparent positions?
float
them left and right to switch them around visually, for example.Changing the tab order should be all it takes to accomplish this. Keep it simple.
Another simple option would be to put the back button after the submit button in the HTML code but float it to the left so it appears on the page before the submit button.
From https://html.spec.whatwg.org/multipage/forms.html#implicit-submission
Having the next input be type="submit" and changing the previous input to type="button" should give the desired default behavior.