Common questions
Must every form control have a visible label?
Yes. Placeholder text is not a label. Use a label element, or aria-labelledby when the design ties text to the control in a way assistive tech can follow.
Where should validation errors appear?
Next to the field and in a summary at the top of the form for longer flows. Announce errors with text, not colour alone, and move focus to the summary or first invalid field.
Should forms work without JavaScript?
The baseline submit and error handling should work from HTML and server responses. Enhance with client-side validation for speed, not as the only path.