Skip to content

Commit

Permalink
Bug 1183398: Mandatory custom fields block form submission if they ar…
Browse files Browse the repository at this point in the history
…e hidden and have no value

r=gerv a=dkl
  • Loading branch information
LpSolit committed Aug 6, 2015
1 parent baed571 commit 684bee4
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 14 deletions.
13 changes: 12 additions & 1 deletion js/field.js
Expand Up @@ -506,7 +506,8 @@ function handleVisControllerValueChange(e, args) {
var controller = args[1];
var values = args[2];

var label_container =
var field = document.getElementById(controlled_id);
var label_container =
document.getElementById('field_label_' + controlled_id);
var field_container =
document.getElementById('field_container_' + controlled_id);
Expand All @@ -521,10 +522,20 @@ function handleVisControllerValueChange(e, args) {
if (selected) {
YAHOO.util.Dom.removeClass(label_container, 'bz_hidden_field');
YAHOO.util.Dom.removeClass(field_container, 'bz_hidden_field');
// Restore the 'required' attribute for mandatory fields.
if (field.getAttribute('data-required') == "true") {
field.setAttribute('required', 'true');
field.setAttribute('aria-required', 'true');
}
}
else {
YAHOO.util.Dom.addClass(label_container, 'bz_hidden_field');
YAHOO.util.Dom.addClass(field_container, 'bz_hidden_field');
// A hidden field must never be required, because the user cannot set it.
if (field.getAttribute('data-required') == "true") {
field.removeAttribute('required');
field.removeAttribute('aria-required');
}
}
}

Expand Down
30 changes: 18 additions & 12 deletions template/en/default/bug/field.html.tmpl
Expand Up @@ -43,13 +43,17 @@
value="[% value FILTER html %]" size="40"
maxlength="[% constants.MAX_FREETEXT_LENGTH FILTER none %]"
[% IF field.type == constants.FIELD_TYPE_INTEGER %] pattern="\d+[% IF dontchange %]|[% dontchange FILTER html %][% END %]" [% END %]
[% ' aria-required="true" required' IF field.is_mandatory %]>
[% IF field.is_mandatory %]
data-required="true" [% 'aria-required="true" required' UNLESS field_hidden %]
[% END %]>
[% CASE [constants.FIELD_TYPE_DATETIME, constants.FIELD_TYPE_DATE] %]
[% size = (field.type == constants.FIELD_TYPE_DATE) ? 10 : 20 %]
<input name="[% field.name FILTER html %]" size="[% size FILTER none %]"
id="[% field.name FILTER html %]"
value="[% value FILTER html %]"
[% ' aria-required="true" required' IF field.is_mandatory %]
[% IF field.is_mandatory %]
data-required="true" [% 'aria-required="true" required' UNLESS field_hidden %]
[% END %]
onchange="updateCalendarFromField(this)">
<button type="button" class="calendar_button"
id="button_calendar_[% field.name FILTER html %]"
Expand All @@ -67,8 +71,9 @@
<span id="[% field.name FILTER html %]_input_area">
<input name="[% field.name FILTER html %]" id="[% field.name FILTER html %]"
value="[% value FILTER html %]" size="7"
[% ' aria-required="true" required' IF field.is_mandatory %]>

[% IF field.is_mandatory %]
data-required="true" [% 'aria-required="true" required' UNLESS field_hidden %]
[% END %]>
</span>

[% IF value %]
Expand All @@ -90,14 +95,15 @@
<select id="[% field.name FILTER html %]"
name="[% field.name FILTER html %]"
[% IF field.type == constants.FIELD_TYPE_MULTI_SELECT %]
[% SET field_size = 5 %]
[% IF field.legal_values.size < 5 %]
[% SET field_size = field.legal_values.size %]
[% END %]
size="[% field_size FILTER html %]" multiple="multiple"
[% ' aria-required="true" required' IF field.is_mandatory %]
[% END %]
>
[% SET field_size = 5 %]
[% IF field.legal_values.size < 5 %]
[% SET field_size = field.legal_values.size %]
[% END %]
size="[% field_size FILTER html %]" multiple="multiple"
[% IF field.is_mandatory %]
data-required="true" [% 'aria-required="true" required' UNLESS field_hidden %]
[% END %]
[% END %]>
[% IF allow_dont_change %]
<option value="[% dontchange FILTER html %]"
[% ' selected="selected"' IF value == dontchange %]>
Expand Down
4 changes: 3 additions & 1 deletion template/en/default/global/textarea.html.tmpl
Expand Up @@ -27,6 +27,8 @@
# defaultcontent: (optional) Default content for the textarea.
# mandatory: (optional) Boolean specifying whether or not the textarea
# is mandatory.
# field_hidden: (optional) True if the field is hidden. Only useful if
# the field is mandatory.
#%]

<textarea [% IF name %]name="[% name FILTER html %]"[% END %]
Expand All @@ -46,7 +48,7 @@
onFocus="this.rows=[% maxrows FILTER html %]"
[% END %]
[% IF mandatory %]
aria-required="true" required
data-required="true" [% 'aria-required="true" required' UNLESS field_hidden %]
[% END %]
[% IF onchange %]
onchange="[% onchange FILTER html %]"
Expand Down

0 comments on commit 684bee4

Please sign in to comment.