diff options
| author | Diego MartÃn <diegomartinpi@gmail.com> | 2016-10-28 19:21:45 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-11-22 11:48:37 -0500 |
| commit | abd434059e1aaff35bc848998ad2335c630ba434 (patch) | |
| tree | cf245a9bb74bac786b71f02d7a6915050e2277a3 | |
| parent | f62abfc03da61977bf080163f0a2ef014decd86a (diff) | |
Fixed #27250 -- Removed 'for ="..."' from CheckboxSelectMultiple's <label>.
| -rw-r--r-- | django/forms/widgets.py | 7 | ||||
| -rw-r--r-- | tests/forms_tests/widget_tests/test_checkboxselectmultiple.py | 13 |
2 files changed, 20 insertions, 0 deletions
diff --git a/django/forms/widgets.py b/django/forms/widgets.py index 7c7e2c90fe..5c593cca71 100644 --- a/django/forms/widgets.py +++ b/django/forms/widgets.py @@ -822,6 +822,13 @@ class CheckboxSelectMultiple(RendererMixin, SelectMultiple): # never known if the value is actually omitted. return False + def id_for_label(self, id_): + """" + Don't include for="field_0" in <label> because clicking such a label + would toggle the first checkbox. + """ + return '' + class MultiWidget(Widget): """ diff --git a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py index 27e870559d..a92e5533e2 100644 --- a/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py +++ b/tests/forms_tests/widget_tests/test_checkboxselectmultiple.py @@ -1,3 +1,4 @@ +from django import forms from django.forms import CheckboxSelectMultiple from .base import WidgetTest @@ -125,3 +126,15 @@ class CheckboxSelectMultipleTest(WidgetTest): widget = self.widget(choices=self.beatles) self.assertIs(widget.value_omitted_from_data({}, {}, 'field'), False) self.assertIs(widget.value_omitted_from_data({'field': 'value'}, {}, 'field'), False) + + def test_label(self): + """" + CheckboxSelectMultiple doesn't contain 'for="field_0"' in the <label> + because clicking that would toggle the first checkbox. + """ + class TestForm(forms.Form): + f = forms.MultipleChoiceField(widget=CheckboxSelectMultiple) + + bound_field = TestForm()['f'] + self.assertEqual(bound_field.field.widget.id_for_label('id'), '') + self.assertEqual(bound_field.label_tag(), '<label>F:</label>') |
