inputmode="decimal"/"numeric" used appropriately
Why it matters
Mobile users who see a text keyboard instead of a numeric pad when entering a routing number or transfer amount experience significant friction: they must switch keyboard modes manually, increasing the chance of typos and form abandonment. WCAG 2.2 SC 1.3.5 (Identify Input Purpose) covers this by requiring inputs to expose their expected input type to browsers and assistive technology. While not a security issue, it directly impacts conversion rates for financial flows where precision matters most.
Severity rationale
Low because incorrect inputmode degrades mobile UX and increases typo rates but does not expose data or enable exploitation.
Remediation
Set inputmode explicitly on every financial input element in src/components/. Use "decimal" for amounts that accept fractions and "numeric" for integer-only fields.
{/* src/components/TransferForm.tsx */}
<input
type="text"
inputMode="decimal"
pattern="[0-9]*[.,]?[0-9]{0,2}"
placeholder="0.00"
aria-label="Amount in dollars"
/>
<input
type="text"
inputMode="numeric"
pattern="[0-9]{9}"
placeholder="Routing number"
aria-label="9-digit routing number"
/>
Note: type="number" can cause onChange issues in React with leading zeros; type="text" with inputMode="numeric" is safer for account and routing number fields.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Financial Form Validation Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- wcag:2.2 · 1.3.5 — Identify Input Purpose
Taxons
History
- 2026-04-18·v1.0.0·Initial import from finserv-form-validation·automated