#17922 closed New feature (fixed)
Add default "required" css classes to form labels
Reported by: | Haisheng HU | Owned by: | ANUBHAV JOSHI |
---|---|---|---|
Component: | Forms | Version: | dev |
Severity: | Normal | Keywords: | sprint2013 |
Cc: | hanson2010@…, Florian Apolloner, d1fffuz0r@… | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | yes |
Description
If a form field is required, add default "required" css class to its label. The output will be as follows.
<tr> <th><label for="id_name" class="required">Name:</label></th> <td><input id="id_name" type="text" name="name" value="1" maxlength="256" /></td> </tr>
Attachments (2)
Change History (21)
by , 13 years ago
Attachment: | base_form_label_class_attr.diff added |
---|
comment:1 by , 12 years ago
Needs documentation: | set |
---|---|
Needs tests: | set |
Triage Stage: | Unreviewed → Accepted |
Type: | Uncategorized → New feature |
comment:2 by , 12 years ago
Version: | 1.3 → master |
---|
I'm added path, docs and corrected tests for a path at this pull request https://github.com/django/django/pull/305
follow-up: 4 comment:3 by , 12 years ago
Cc: | added |
---|
What's the rationale for setting this on the label on not on the actual input field (or even both)?
comment:4 by , 12 years ago
In most cases, the label of required fields should be in bolded style or accompanied by an asterisk, while the actual input field left as usual.
Replying to apollo13:
What's the rationale for setting this on the label on not on the actual input field (or even both)?
comment:5 by , 12 years ago
Cc: | added |
---|
follow-up: 7 comment:6 by , 12 years ago
Needs documentation: | unset |
---|---|
Needs tests: | unset |
Note that there is already a required_css_class
settable attribute for forms, documented here: https://docs.djangoproject.com/en/dev/ref/forms/api/#styling-required-or-erroneous-form-rows (see also #3512)
So when a form is output with as_p
, as_ul
or as_tr
, the row itself is already marked with the required_css_class
value, hence the CSS to style them is trivial. However, the problem remains when the field is output with dict access ({{ form.myfield.label_tag }}: {{ form.myfield }}
). See for example the TODO comments in auth/user/change_password.html template
.
I will propose a new patch that only set the required_css_class
in this latter case.
The fact that required_css_class
is not set by default on forms might be the subject of another ticket...
comment:7 by , 12 years ago
comment:8 by , 12 years ago
Keywords: | sprint2013 added |
---|---|
Owner: | changed from | to
Status: | new → assigned |
comment:10 by , 11 years ago
Owner: | changed from | to
---|
Please see this PR:
https://github.com/django/django/pull/2390
comment:11 by , 11 years ago
I think we should use the "required" attribute from HTML5 and don't set any css class.
comment:12 by , 11 years ago
Florian, would adding the required
attribute on the widget help styling the label (common use case) ? Of course, adding the HTML5 required
attribute is a very good idea, but I'm not sure it solves this issue.
comment:13 by , 11 years ago
An example of styling a label using the :required
pseudoselector:
http://html5doctor.com/css3-pseudo-classes-and-html5-forms/#required-and-optional-elements
comment:14 by , 11 years ago
Thanks Loïc. Unfortunately, these seems to work only when the label follows the input, not the reverse :-(
comment:15 by , 11 years ago
True, CSS can't match backwards, it'd be workable from the <label><input></label>
syntax, but that's not very practical.
One day we'll hopefully be able to pick the actual subject of a CSS selector... (cf. http://dev.w3.org/csswg/selectors4/#subject)
Personally I'm a bit reluctant adding styling information from the Python side, this things IMO belong to the template layer, but in this specific case, required_css_class
is optional so I guess it's not that bad.
comment:16 by , 11 years ago
Patch needs improvement: | unset |
---|
comment:17 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:18 by , 11 years ago
I created #22329 as a follow-up to this ticket to address the TODOs in the admin templates that Claude mentioned in comment 6.
patch file for 1.3.1