diff --git a/src/pages/menuPages/configuration/SettingValueField.vue b/src/pages/menuPages/configuration/SettingValueField.vue index 05fded4..811a73a 100644 --- a/src/pages/menuPages/configuration/SettingValueField.vue +++ b/src/pages/menuPages/configuration/SettingValueField.vue @@ -32,13 +32,24 @@ + + { +const priceValue = computed(() => { const n = parseFloat(String(props.modelValue || '').replace(/,/g, '')) return Number.isFinite(n) ? n : undefined }) -function onNumberChange(val: number | string | null) { +function onPriceChange(val: number | string | null) { if (val === null || val === undefined || val === '') { emit('update:value', '') return } emit('update:value', String(val)) } + +function normalizePlainNumberInput(value: string): string { + const latin = value.replace(/[۰-۹]/g, (d) => String('۰۱۲۳۴۵۶۷۸۹'.indexOf(d))) + let out = '' + let hasDot = false + for (const ch of latin.replace(/,/g, '')) { + if (ch >= '0' && ch <= '9') out += ch + else if (ch === '.' && !hasDot) { + hasDot = true + out += ch + } + } + return out +} + +function onPlainNumberChange(val: string) { + emit('update:value', normalizePlainNumberInput(val ?? '')) +}