Date input

A date input field allows the user to enter a date they remember.

Examples

Default

Example date field (optional)
<form action="/" accept-charset="UTF-8" method="post">
  <div class="cads-form-field">
    <div class="cads-form-field__content">
      <fieldset class="cads-form-group"><legend class="cads-form-field__label">Example date field <span class="cads-form-field__optional">(optional)</span></legend>
        <div class="cads-date-input">
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field-input">Day</label><input class="cads-input cads-input--2ch" name="forms_date_field[date_field(3i)]" id="forms_date_field_date_field-input" inputmode="numeric"></div>
          </div>
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_2i">Month</label><input class="cads-input cads-input--2ch" name="forms_date_field[date_field(2i)]" id="forms_date_field_date_field_2i" inputmode="numeric"></div>
          </div>
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_1i">Year</label><input class="cads-input cads-input--4ch" name="forms_date_field[date_field(1i)]" id="forms_date_field_date_field_1i" inputmode="numeric"></div>
          </div>
        </div>
      </fieldset>
    </div>
  </div>
</form>

<%= form_with model: Forms::DateField.new, url: "/" do |form| %>
  <%= form.cads_date_field(:date_field) %>
<% end %>

With hint

Example date field with hint (optional)

Enter your date of birth, like 01 02 1990

<form action="/" accept-charset="UTF-8" method="post">
  <div class="cads-form-field">
    <div class="cads-form-field__content">
      <fieldset class="cads-form-group" aria-describedby="forms_date_field_date_field_hint-hint"><legend class="cads-form-field__label">Example date field with hint <span class="cads-form-field__optional">(optional)</span></legend>
        <p class="cads-form-field__hint" id="forms_date_field_date_field_hint-hint">Enter your date of birth, like 01 02 1990</p>
        <div class="cads-date-input">
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_hint-input">Day</label><input class="cads-input cads-input--2ch" name="forms_date_field[date_field_hint(3i)]" id="forms_date_field_date_field_hint-input" inputmode="numeric"></div>
          </div>
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_hint_2i">Month</label><input class="cads-input cads-input--2ch" name="forms_date_field[date_field_hint(2i)]" id="forms_date_field_date_field_hint_2i" inputmode="numeric"></div>
          </div>
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_hint_1i">Year</label><input class="cads-input cads-input--4ch" name="forms_date_field[date_field_hint(1i)]" id="forms_date_field_date_field_hint_1i" inputmode="numeric"></div>
          </div>
        </div>
      </fieldset>
    </div>
  </div>
</form>

<%= form_with model: Forms::DateField.new, url: "/" do |form| %>
  <%= form.cads_date_field(:date_field_hint, hint: "Enter your date of birth, like 01 02 1990") %>
<% end %>

With error message

Example date field (optional)

Date must be in the past

<form action="/" accept-charset="UTF-8" method="post">
  <div class="cads-form-field cads-form-field--has-error">
    <div class="cads-form-field__error-marker"></div>
    <div class="cads-form-field__content">
      <fieldset class="cads-form-group" aria-describedby="forms_date_field_date_field_required-error"><legend class="cads-form-field__label">Example date field <span class="cads-form-field__optional">(optional)</span></legend>
        <p class="cads-form-field__error-message" id="forms_date_field_date_field_required-error">Date must be in the past</p>
        <div class="cads-date-input">
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_required-input">Day</label><input class="cads-input cads-input--2ch cads-input--error" name="forms_date_field[date_field_required(3i)]" id="forms_date_field_date_field_required-input" inputmode="numeric" value="18"></div>
          </div>
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_required_2i">Month</label><input class="cads-input cads-input--2ch cads-input--error" name="forms_date_field[date_field_required(2i)]" id="forms_date_field_date_field_required_2i" inputmode="numeric" value="9"></div>
          </div>
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_required_1i">Year</label><input class="cads-input cads-input--4ch cads-input--error" name="forms_date_field[date_field_required(1i)]" id="forms_date_field_date_field_required_1i" inputmode="numeric" value="2026"></div>
          </div>
        </div>
      </fieldset>
    </div>
  </div>
</form>

<%= form_with model: Forms::DateField.invalid_example, url: "/" do |form| %>
  <%= form.cads_date_field(:date_field_required) %>
<% end %>

Page heading

Example date field with page heading

<form action="/" accept-charset="UTF-8" method="post">
  <div class="cads-form-field">
    <div class="cads-form-field__content">
      <fieldset class="cads-form-group"><legend class="cads-form-field__label">
          <h1 class="cads-page-title">Example date field with page heading</h1>
        </legend>
        <div class="cads-date-input">
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_page_heading-input">Day</label><input class="cads-input cads-input--2ch" name="forms_date_field[date_field_page_heading(3i)]" id="forms_date_field_date_field_page_heading-input" inputmode="numeric"></div>
          </div>
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_page_heading_2i">Month</label><input class="cads-input cads-input--2ch" name="forms_date_field[date_field_page_heading(2i)]" id="forms_date_field_date_field_page_heading_2i" inputmode="numeric"></div>
          </div>
          <div class="cads-date-input">
            <div class="cads-date-input__item"><label class="cads-form-field__label" for="forms_date_field_date_field_page_heading_1i">Year</label><input class="cads-input cads-input--4ch" name="forms_date_field[date_field_page_heading(1i)]" id="forms_date_field_date_field_page_heading_1i" inputmode="numeric"></div>
          </div>
        </div>
      </fieldset>
    </div>
  </div>
</form>

<%= form_with model: Forms::DateField.new, url: "/" do |form| %>
  <%= form.cads_date_field(:date_field_page_heading, page_heading: true) %>
<% end %>

Using with Rails

When using with Rails we recommend using the form builder method provided by CitizensAdviceComponents::FormBuilder.

<%= form_with model: @model, url: "/" do |form| %>
  <%= form.cads_date_field(
    :date_of_birth,
    hint: "Example hint text",
    required: true
  ) %>
<% end %>

The method accepts an options hash with the following optional parameters:

  • :label - The text for the label associated with the input. Defaults to using translations.
  • :hint - Hint text for the input
  • :required - Boolean indicating the field is optional (i.e. not required)
  • :page_heading - Wraps the <legend> in a <h1>