From f3e7bdf6c0a602028a72880988df1ba4bd5d7d27 Mon Sep 17 00:00:00 2001 From: Nicolas CARPi Date: Thu, 14 Nov 2024 20:57:08 +0100 Subject: [PATCH] bug/minor: events: ignore blur event after keypress has been handled fix #11 --- src/main.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main.ts b/src/main.ts index 2882a24..7a43be5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -193,10 +193,12 @@ export class Malle { original: HTMLElement; input: HTMLInputElement|HTMLSelectElement; innerFun: string; + ignoreBlur: boolean; constructor(options: Options) { this.opt = this.normalizeOptions(options); this.debug(`Options: ${JSON.stringify(this.opt)}`); + this.ignoreBlur = false; if (this.opt.listenNow) { this.listen(); } @@ -321,6 +323,9 @@ export class Malle { } handleBlur(event: Event) { + if (this.ignoreBlur) { + return; + } // read behavior from options let blurAction: string = this.opt.onBlur; // and let element override it @@ -334,6 +339,8 @@ export class Malle { } handleKeypress(event: KeyboardEvent): boolean { + // reset this global flag + this.ignoreBlur = false; // ignore it for textarea if (this.opt.inputType === InputType.Textarea) { return false; @@ -350,6 +357,7 @@ export class Malle { return; } this[enterAction](event); + this.ignoreBlur = true; return; } @@ -364,6 +372,7 @@ export class Malle { event.preventDefault(); return; } + this.ignoreBlur = true; this[escAction](event); } }