1. What is the issue? Please be detailed.
When a user taps a decimal field on iOS, the keypad includes a decimal key, so values like 2.5 can be entered.
On iOS, decimal fields open the digits-only number pad, which has no decimal key. Users can't enter decimal values at all. The same forms work on Android, because Android numeric keyboards include a . key.
The region is en-US, so this isn't a comma-versus-dot locale problem. The decimal key is missing entirely.
2. What steps can we take to reproduce this issue?
Form (XML or XLSX file): odk-ios-bug-example.xlsx (23.0 KB)
Steps:
- Upload the form to Central and enable ODK Web Forms (recommended)
- Open the form on an iPhone (Safari).
- Tap the decimal question.
- The keypad shows digits only, with no decimal key.
3. What have you tried to fix the issue?
N/A
4. Upload any forms or screenshots you can share publicly below.
Web Forms version: shipped with Central v2026.2.2
5. Likely root cause
The rendered input ends up with inputmode="numeric", and iOS's numeric pad has no decimal key.
-
InputNumeric.vuesetsfractionalDigits = { min: 0, max: 13 }for decimals. -
PrimeVue
InputNumber(4.3.3) picks the input mode like this:inputmode: mode === "decimal" && !minFractionDigits ? "numeric" : "decimal"Because
minFractionDigitsis0, that resolves to"numeric". -
InputNumeric.vuetries to override it withpt: { input: { root: { inputMode } } }. That key is camelCase while PrimeVue sets lowercaseinputmode, and judging by the behaviour on iOS, PrimeVue's"numeric"wins.
