A required single-select can use an empty-valued first option as a placeholder choice.
HTML required select: use an empty first choice when no decision exists
Why this choice matters
A quality reviewer must choose a disposition for parcel P-47. If the first real option were preselected, submitting the form untouched could record a decision the reviewer never made. An empty first option keeps the field unresolved until a real choice is selected. The label states the question and the server enforces the allowed values after submission. For a decision with serious consequences, also present the parcel context and a separate confirmation step in the application.
<form action="/parcels/P-47/disposition" method="post">
<label for="disposition">Disposition for parcel P-47</label>
<select id="disposition" name="disposition" required>
<option value="">Choose a disposition</option>
<option value="hold">Hold for review</option>
<option value="return">Return to sender</option>
<option value="release">Release to dispatch</option>
</select>
<button type="submit">Continue review</button>
</form>What it does not do
The empty first option is not a valid disposition. The server must reject empty and unknown values and confirm that the parcel is still eligible for the selected transition.
Cost and operational limits
Native select has no widget bundle. The main cost is accidental policy drift when options change in markup but the backend accepts a different set or assumes the first option is always a safe default.
Common Mistakes
- Do not preselect a material decision just to avoid an empty state.
- Do not give the placeholder a real value.
- Do not rely on required for server validation.
