What is a better experience for a user if they press enter when using a form? Should it submit the form or move to the next field?
Hitting enter should be the same as pressing the submit-button. However there are different schools in wheter or not to use this technique: FORM submission and the ENTER key?
There seems to be some confusion/disagreement among browser developers as to whether a Submit control is a "successful control" (in the terms of e.g the HTML4 specification) when a form is submitted by means of Enter.
It's quite an old article, yes, but this reasoning is still true.
One could always leave this desicion to the user, as Facebook does in the messaging services. I think this is really the best way to go - since every user are different, have different needs and experience. Do this and you have my blessing:
Moving between fields in a form are usually done with the tab key. In HTML you can set in which order you move between field using the attribute tabindex in an input field.
It depends on what type of field it is in the form.
If 'enter' has a meaning within that form element, then you should have it behave according to that meaning. For example, if it's a textbox, 'enter' should take them to the next line. If it is a table, then 'enter' should move down to the cell below the current one.
If 'enter' has no meaning within that form element, it should submit the form.
The standard which you should us, it to 'tab' between fields, unless tab has a meaning within the form field. For example, if it's a table, 'tab' should move to the next cell.
I would certainly avoid using enter to switch fields, there is really no reason to create this behaviour. You could also run into problems using text-fields where a user is allowed to use enters.
I always find the enter to submit difficult: I believe the longer / more complex a form becomes, the usefulness decreases. However I think it is not too bad to have the submit on enter behaviour providing your form has good error handling. You want to prevent an incomplete form be submitted: both for the user experience and your backend.