Skip to content

need to be able to create accessible input error labels #1850

Open
@ajfarkas

Description

Precheck

[x] Do not use the issues tracker for help or support, try Stack Overflow.
[x] For bugs, do a quick search and make sure the bug has not yet been reported
[x] Finally, be nice and have fun!

Environment

  • Ruby 3.3.1
  • Rails 7.1.3
  • Simple Form 5.3.0

Background

I'm attempting to make a form that validates errors server-side on submit. The form needs to programmatically associate the error text with the appropriate input field, preferably by amending the label to include the error in a span that is hidden from sight (there is separate error text that is visually but not programmatically associated with the input.
Because the validations are on submit, using role: 'alert' does not do anything because this creates a new accTree, and alerts only read contents on content change, not creation.

Current behavior

While this is currently possible, it's via a fairly complex workaround that requires me to explicitly set this on each input on my lengthy form.

I would like to accomplish this via SimpleForm.setup. The current behavior is that I can only set up a label (with appropriate for attribute) with the form's :label text. I could do something like:

 b.wrapper tag: 'label', class: 'my-label' do |c|
  c.use :label_text
  c.use :error, class: 'sr-only'
end

but I cannot associate this label with the input.

Will be even more helpful if you provide a sample application or a test case that reproduces the error.

Expected behavior

The short version is I'd like to be able to easily create a form that programmatically announces errors to screen readers, even on page refresh (as long as errors are present).

This could be accomplished a number of ways.

I would like a way to either add an input error within a label, or to associate a wrapper with another element with a for attribute. Maybe something like:

b.wrapper tag: :label, for: :input_id do |c|
  c.use :label_text
  c.use :error, class: 'sr-only'
end

Notes

I really appreciate this project. I'm using this on a major product, and the learning curve has been reasonable while the gem has really allow my team to reduce their code (and therefore reduce errors). So, thank you!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions