Skip to main content
British Red Cross homepage

Select input

The select component allows a user to pick an option from a list.

Anatomy

The select input consists of the following elements:

  1. Label 
  2. Help text (optional)
  3. Required indicator (optional)
  4. Field
  5. Error message (optional)
  6. Error indicator (optional)
  7. Chevron

States

The radio button component can have the following states:

  1. Default 
  2. Hover
  3. Disabled
  4. Focus
  5. Error

Designer Guidance

When to use

Use the Select input component when users need to:

  • Select a single option from a list of options.

When not to use

Avoid using a Select input component when:

  • There is a short list of options available for selection: use a Radio button component instead.
  • Where there is a long list of options available for selection: consider if there are questions you could ask the user which would allow you to reduce the number of options needed.

How to use

  • Labels: Always provide a visible label above the Select input. Use sentence case and make it clear what data is expected.
  • Help text: Use help text below the label to add additional context where needed. (e.g. to help users understand the options available.)
  • Preselection: If you are using the select component to ask a user a question, do not preselect any of the options.
If you are not asking the user a direct question, for example a settings change, you can preselect an option as a default response.
  • Selection: Users can click on the expand-more chevron to display a list of mutually exclusive items. Users can then select only one of the options provided. 

Behaviours

  • Error messages appear below the Select input when validation fails.
  • Error messages must:
    • Be clear, concise and written in plain English.
    • Explain what went wrong and how to fix it.
  • Avoid vague messages such as ‘An error occurred’. An error for a specific situation is more helpful.
  • Do not apologise. It does not help the user resolve the problem.
  • Frequency of errors should be tracked to help with testing and research.
  • Focus state must be clearly visible.
  • Disabled Select inputs:
    • Indicate that the field exists, but is unavailable.
    • Should display a "not-allowed" cursor on hover.
  • Required fields must be clearly indicated using text (e.g “Required”) or an asterisk with supporting context.
    • Do not rely on colour alone to show required or error states.

Options

The Select input has optional help text:

Use the help text to:

  • Provide guidance relevant to most users.
  • Give an example that clarifies what information is expected.

Help text should:

  • Be no longer than a single short sentence.
  • Not be used for long and complex instructions.

Developer Guidance

Best practices

  • Use semantic HTML. 
  • Programmatically associate labels with inputs.
  • Use <aria-describedby> for help text and error messages.
  • Use <aria-required="true"> for required fields.
  • Do not rely on placeholder text for instructions.
  • Ensure keyboard operability and logical focus order.
  • Apply visible focus styles and maintain minimum target size (44×44px).

Content Editor Guidance

Best practices

  • Write labels that are short, clear, and descriptive (e.g. “Select the state you currently reside in”).
  • Use sentence case without punctuation.
  • Provide help text separately if needed (not as placeholder).
  • Avoid jargon or ambiguous terms.

Accessibility

Accessible Select input fields must:

  • Always use a visible label for each input.
  • Do not use placeholder text as a substitute for labels.
  • Provide additional instructions using <aria-describedby> when necessary.
  • Required fields must be communicated to all users:
    • Visual: Clear text indicator (e.g “Required or asterisk”).
    • Programmatic: <aria-required="true">.
  • Ensure sufficient colour contrast for text and borders.
  • Select inputs must be operable via keyboard and have visible focus indicators.

WCAG success criteria

Support

If any accessibility issues have been found or for general questions about this component, please contact the digital team.

Send us a message