From 93adf6d22511d817e25c10a0d8ef8aa1e421f2a8 Mon Sep 17 00:00:00 2001 From: Avior Date: Mon, 9 Dec 2019 14:13:38 +0100 Subject: [PATCH] Fix possibility to add letters to number input Signed-off-by: Avior --- src/modules/NumberInput.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/modules/NumberInput.ts b/src/modules/NumberInput.ts index 6e2d45d..3acee13 100644 --- a/src/modules/NumberInput.ts +++ b/src/modules/NumberInput.ts @@ -1,6 +1,7 @@ import InputIdentity from './Interfaces/InputIdentity'; import DefaultInput from './DefaultInput'; import { toNumber, isNumber } from '../Functions'; +import FormManager from '../FormManager'; /** * @@ -9,13 +10,26 @@ import { toNumber, isNumber } from '../Functions'; */ export default class NumberInput extends DefaultInput { + constructor(element: HTMLElement, form: FormManager) { + super(element, form) + const regex = new RegExp("^[0-9.]{1}|Backspace$") + element.addEventListener("keydown", (ev: KeyboardEvent) => { + if (!regex.test(ev.key) && !ev.ctrlKey) { + ev.preventDefault() + } + }) + + } + public formatValue(value: any): number|undefined { const n = toNumber(value) return n } public verify(): boolean { - return typeof this.getValue() === "undefined" || isNumber(this.getValue()) + const val = this.getValue() + if ( val === undefined && this.element.hasAttribute("required")) return false + return typeof val === "undefined" || isNumber(val) } public static identity: InputIdentity = {