-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Core: Unnecessary aria-describedby #2410
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Core: Unnecessary aria-describedby #2410
Conversation
Ensure that aria-describedby is removed from all members of a group when all the known errors are resolved
Includes additional unit tests and a demo page
…n-jh/jquery-validation into unnecessary-aria-describedby
|
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. |
There was a problem hiding this 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
ariaDescribedByCleanupsetting (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 |
Copilot
AI
Oct 3, 2025
There was a problem hiding this comment.
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.
| // 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) |
|
|
||
| for ( var i = 0; errors[ i ]; i++ ) { |
Copilot
AI
Oct 3, 2025
There was a problem hiding this comment.
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.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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
ariaDescribedByCleanupoption 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-describedbyis 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.