Opened 101 minutes ago

Last modified 97 minutes ago

#36949 assigned Bug

Missing label on each <select> in a fieldset

Reported by: Jacob Walls Owned by: Eliana Rosselli
Component: Forms Version: 6.0
Severity: Normal Keywords: accessibility, fieldset
Cc: Antoliny, Thibaud Colas Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

As Thibaud mentioned here when use_fieldset was added to forms, we're lacking a label on each <select> element in a <fieldset>, even though a <legend> is present for the fieldset.

Now that the admin uses Widget.use_fieldset since #35892, it's easy to reproduce by just checking a ForeignKey field in the admin:

Then, in Chrome Dev Tools, the lighthouse tab reports:

Select elements do not have associated label elements.

Pure forms reproducer, in a shell:

from django.db import models
from django import forms

class Person(models.Model):
    best_friend = models.ForeignKey(
        "auth.User",
        models.CASCADE,
    )
    class Meta:
        app_label = "myapp.Person"

class MyWidget(forms.Select):
    use_fieldset = True

class PersonForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = ["best_friend"]
        widgets = {"best_friend": MyWidget}

print(PersonForm().as_p())
<p>
    <label for="id_best_friend">Best friend:</label>
    <select name="best_friend" required id="id_best_friend">
  <option value="" selected>---------</option>

  <option value="2">anonymous</option>

  <option value="1">admin</option>

</select>
    
    
      
    
  </p>

Tentatively assigning to Eli as a Djangonaut Space navigator to evaluate if a good fit for anyone.

Change History (1)

comment:1 by Jacob Walls, 97 minutes ago

There's some relevant advice in a related ticket: ticket:36509#comment:1

Note: See TracTickets for help on using tickets.
Back to Top