diff --git a/core/includes/form.inc b/core/includes/form.inc index 052c9ce87a..5484bb3c00 100644 --- a/core/includes/form.inc +++ b/core/includes/form.inc @@ -273,13 +273,14 @@ function template_preprocess_details(&$variables) { */ function template_preprocess_radios(&$variables) { $element = $variables['element']; - $variables['attributes'] = []; if (isset($element['#id'])) { $variables['attributes']['id'] = $element['#id']; } if (isset($element['#attributes']['title'])) { $variables['attributes']['title'] = $element['#attributes']['title']; } + // Disabled property should only be applied to input element children. + unset($variables['attributes']['disabled']); $variables['children'] = $element['#children']; } @@ -295,13 +296,14 @@ function template_preprocess_radios(&$variables) { */ function template_preprocess_checkboxes(&$variables) { $element = $variables['element']; - $variables['attributes'] = []; if (isset($element['#id'])) { $variables['attributes']['id'] = $element['#id']; } if (isset($element['#attributes']['title'])) { $variables['attributes']['title'] = $element['#attributes']['title']; } + // Disabled property should only be applied to input element children. + unset($variables['attributes']['disabled']); $variables['children'] = $element['#children']; } diff --git a/core/misc/states.es6.js b/core/misc/states.es6.js index b47b90de57..3d5614afa5 100644 --- a/core/misc/states.es6.js +++ b/core/misc/states.es6.js @@ -599,7 +599,6 @@ // element monitoring itself. if (e.trigger) { $(e.target) - .prop('disabled', e.value) .closest('.js-form-item, .js-form-submit, .js-form-wrapper') .toggleClass('form-disabled', e.value) .find('select, input, textarea') @@ -638,7 +637,10 @@ $document.on('state:checked', (e) => { if (e.trigger) { - $(e.target).prop('checked', e.value); + $(e.target) + .closest('.js-form-item, .js-form-wrapper') + .find('input') + .prop('checked', e.value); } }); diff --git a/core/misc/states.js b/core/misc/states.js index 4fd2052a43..59ef559e6f 100644 --- a/core/misc/states.js +++ b/core/misc/states.js @@ -314,7 +314,7 @@ var $document = $(document); $document.on('state:disabled', function (e) { if (e.trigger) { - $(e.target).prop('disabled', e.value).closest('.js-form-item, .js-form-submit, .js-form-wrapper').toggleClass('form-disabled', e.value).find('select, input, textarea').prop('disabled', e.value); + $(e.target).closest('.js-form-item, .js-form-submit, .js-form-wrapper').toggleClass('form-disabled', e.value).find('select, input, textarea').prop('disabled', e.value); } }); @@ -341,7 +341,7 @@ $document.on('state:checked', function (e) { if (e.trigger) { - $(e.target).prop('checked', e.value); + $(e.target).closest('.js-form-item, .js-form-wrapper').find('input').prop('checked', e.value); } });