Skip to content

Conversation

@eden-jh
Copy link
Contributor

@eden-jh eden-jh commented Nov 16, 2021

Apologies for the messy commit history. I squashed it (eden-jh@73a70d2) but then it forced me to merge before pushing.

Description

I added an ariaDescribedByCleanup option to the validator setting. The default is false just to keep the current behavior (leave the value in place but empty and hide the error elements). I don't feel strongly about that, but it felt safer to make this opt-in, especially because there's a certain amount of customization that needs to happen in order for this to be a problem.

Fixes #2094 (kind of; the examples given in the issue are from unobtrusive, and the default is the current behavior, the setting will have to be updated in unobtrusive.)

Added additional tests for this functionality, plus a demo page.

Groups

aria-describedby is used on all group elements if any of them has an error, and is only removed when all elements in that group are valid. This seemed the most consistent with the current functionality.

@github-actions
Copy link

This issue/proposal has been automatically marked as idle and stale because it hasn't had any recent activity. It will be automatically closed if no further activity occurs. If you think this is wrong, or the problem still persists, just pop a reply in the comments and one of the maintainers will (try!) to follow up.
Thank you for contributing :)

@github-actions github-actions bot added the stale Used to mark stale issues label Apr 15, 2022
@github-actions github-actions bot closed this Apr 22, 2022
@bytestream bytestream reopened this May 8, 2024
@bytestream bytestream added NEEDS REVIEW and removed stale Used to mark stale issues labels May 8, 2024
@bytestream bytestream requested a review from Copilot October 3, 2025 10:40
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Adds an optional ariaDescribedByCleanup setting to the jQuery Validation Plugin that controls whether aria-describedby attributes are removed from form fields when they become valid. The default is false to maintain current behavior.

  • Introduces new ariaDescribedByCleanup setting (defaults to false)
  • Refactors aria-describedby management into dedicated helper methods
  • Adds comprehensive test coverage for the new functionality including group behavior

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/core.js Core implementation of aria-describedby cleanup functionality with new helper methods
test/error-placement.js Comprehensive test coverage for the new cleanup behavior
test/index.html Test form markup for aria-describedby cleanup scenarios
demo/aria-describedby-cleanup.html Demo page showcasing the new functionality
demo/css/cmxform.css CSS updates to support demo layout with flexbox styling
demo/css/cmxformTemplate.css Template CSS updates for consistent box styling
demo/index.html Added link to the new demo page

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

if ( testgroup === group && name !== checkElement.name ) {
cleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );

// Don't want to check fields if a user hasn't gotten to them yet
Copy link

Copilot AI Oct 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] This comment is unclear about what 'a user hasn't gotten to them yet' means in this context. Consider clarifying what condition this refers to or removing if it's not adding value.

Suggested change
// Don't want to check fields if a user hasn't gotten to them yet
// Only check fields that have already been marked as invalid (i.e., user has interacted with them)

Copilot uses AI. Check for mistakes.
Comment on lines +649 to +650

for ( var i = 0; errors[ i ]; i++ ) {
Copy link

Copilot AI Oct 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Using a for loop with array access pattern instead of jQuery's .each() method is inconsistent with the rest of the codebase style. Consider using errors.each(function(i, error) { ... }) for consistency.

Copilot uses AI. Check for mistakes.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@bytestream bytestream changed the title Core: Unnecessary aria-describedby (makes #2094 fixable) Core: Unnecessary aria-describedby Oct 3, 2025
@bytestream bytestream merged commit 6eb2df0 into jquery-validation:master Oct 3, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Unnecessary aria-describedby attribute causes WCAG scans to fail

2 participants