diff --git a/theme/boost/amd/src/form-display-errors.js b/theme/boost/amd/src/form-display-errors.js index 7405f7a5f71..1a32c295535 100644 --- a/theme/boost/amd/src/form-display-errors.js +++ b/theme/boost/amd/src/form-display-errors.js @@ -38,15 +38,24 @@ define(['jquery', 'core/event'], function($, Event) { parent.addClass('has-danger'); parent.data('client-validation-error', true); $(element).addClass('form-control-danger'); - $(element).attr('aria-describedby', $(element).attr('id') + '-feedback'); + $(element).attr('aria-describedby', feedback.attr('id')); + $(element).attr('aria-invalid', true); + feedback.attr('tabindex', 0); feedback.html(msg); - feedback.show(); + + // Only display and focus when the error was not already visible. + if (!feedback.is(':visible')) { + feedback.show(); + feedback.focus(); + } + } else { if (parent.data('client-validation-error') === true) { parent.removeClass('has-danger'); parent.data('client-validation-error', false); $(element).removeClass('form-control-danger'); - $(element).attr('aria-describedby', ''); + $(element).removeAttr('aria-describedby'); + $(element).attr('aria-invalid', false); feedback.hide(); } }