Kundenansicht neu E-Fix M3: Fehlermeldungen der Bestellseiten und Formulare als Live-Region (role="alert")

abo-error, switch-error (und der Fehler der Wechsel-Vorschau), storage-error, tk-error samt Fehlerzeile der Rückfrage-Antwort, der Fehler von
"Zahlungsart aktualisieren" sowie login-error und form-error auf Login, Kündigen und Widerrufen waren einfache Absätze: Screenreader lasen
sie nicht vor, obwohl der Knopf wieder frei wurde. Jetzt role="alert", gepinnt in test/knEfixCss.test.js.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-16 21:42:07 +00:00
1 parent ddaf2879c4
commit 4c64edc057
9 files changed
+32 -10

No files matched your search

+2 -2
View File
@@ -114,7 +114,7 @@ export async function zeigeWechsel(wurzel, { route, me, nav, daten } = {}) {
const zeichne = () => {
const p = lauf.preview
const uebersicht = lauf.error
? h('p', { class: K.fehler }, lauf.error)
? h('p', { class: K.fehler, role: 'alert' }, lauf.error)
: lauf.loading || !p ? h('p', { class: 'kn-hinweis' }, 'Deine Übersicht wird berechnet …')
: baueBlock(zeilenVon(p), { id: 'switch-block' })
const sperre = lauf.busy || viewAs
@@ -131,7 +131,7 @@ export async function zeigeWechsel(wurzel, { route, me, nav, daten } = {}) {
baueLinkzeile(T.wechsel.linkzeile, { id: 'switch-linkzeile' }),
haken ? h('label', { class: K.check }, haken, h('span', { id: 'switch-beginn-text' }, T.wechsel.haken)) : null,
gesperrt ? h('p', { class: 'kn-sperrzeile', id: 'switch-sperre' }, T.wechsel.gesperrt) : null,
h('p', { class: lauf.fehlerKlasse ?? K.fehler, id: 'switch-error', hidden: !lauf.fehler }, lauf.fehler),
h('p', { class: lauf.fehlerKlasse ?? K.fehler, id: 'switch-error', role: 'alert', hidden: !lauf.fehler }, lauf.fehler),
h('div', { class: 'kn-aktionen' },
h('button', { type: 'button', class: K.primaer, id: 'switch-buy', disabled: lauf.busy || viewAs || lauf.loading || !p || gesperrt, on: { click: absenden } }, lauf.busy ? 'Wird bestellt …' : (T.knopf || KNOPF)),
viewAs ? h('span', { class: K.meldung }, TEXT_SPERRE) : null),