A form control needs a name that people can see and assistive technology can identify. Connect a visible label to a control with matching for and id values, or wrap the control in its label. Placeholder text doesn't replace that relationship. Native controls also supply useful constraints: an email field can reject plain text, a required select can reject its blank placeholder, and a fieldset can name a group of related choices. You'll build each relationship directly in HTML. Check a blank value as carefully as a filled one. Textual zero is a value and must not disappear merely because it looks falsy.