Refs #32819 -- Used auto_id instead of id_for_label as unique identifier for the field.

`id_for_label` is blank for widgets with multiple inputs such as radios
and multiple checkboxes. Therefore , `help_text` for fields using these
widgets cannot currently be associated using `aria-describedby`.
`id_for_label` is being used as a guard to avoid incorrectly adding
`aria-describedby` to those widgets.

This change uses `auto_id` as the unique identified for the fields
`help_text`. A guard is added to avoid incorrectly adding
`aria-describedby` to inputs by checking the widget's `use_fieldset`
attribute. Fields rendered in a `<fieldset>` should have
`aria-describedby` added to the `<fieldset>` and not every `<input>`.
This commit is contained in:
David Smith 2023-11-15 20:51:00 +00:00 committed by Mariusz Felisiak
parent 61c305f298
commit 292f1ea90f
12 changed files with 18 additions and 17 deletions

View file

@ -283,9 +283,9 @@ fields. We've specified ``auto_id=False`` to simplify the output:
<div>Sender:<div class="helptext">A valid email address, please.</div><input type="email" name="sender" required></div>
<div>Cc myself:<input type="checkbox" name="cc_myself"></div>
When a field has help text and :attr:`~django.forms.BoundField.id_for_label`
returns a value, we associate ``help_text`` with the input using the
``aria-describedby`` HTML attribute:
When a field has help text and the widget is not rendered in a ``<fieldset>``,
``aria-describedby`` is added to the ``<input>`` to associate it to the
help text:
.. code-block:: pycon