From 6d6a6b7ad110b9b7b76ed5107cdf823250ad22ce Mon Sep 17 00:00:00 2001 From: ChenX Date: Tue, 28 May 2024 16:04:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96:=E5=8A=A8=E6=80=81=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E4=BC=98=E5=8C=96=E6=9B=B4=E6=96=B0=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/UI/DynamicPrompt/DynamicInputBase.ts | 19 +++++++++++++++---- src/UI/JsPlugin/InputAutoSize.ts | 4 ++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/UI/DynamicPrompt/DynamicInputBase.ts b/src/UI/DynamicPrompt/DynamicInputBase.ts index abd7f5cbd..abda373d6 100644 --- a/src/UI/DynamicPrompt/DynamicInputBase.ts +++ b/src/UI/DynamicPrompt/DynamicInputBase.ts @@ -62,14 +62,25 @@ export class DynamicInput container.appendChild(this.container); - let updateWidth = AutoReSize(this.inputEl).updateWidth; + let updateWidth: Function; let oldLength = 0; + let updateWidthIng = false; this.UpdateWidth = () => { - if (oldLength !== this.inputEl.value.length) + if (updateWidthIng) return; + let newLength = this.inputEl.value.length; + if ((oldLength < newLength || (oldLength - newLength) > 3)) { - updateWidth(); - oldLength = this.inputEl.value.length; + updateWidthIng = true; + queueMicrotask(() => + { + updateWidthIng = false; + if (!updateWidth) + updateWidth = AutoReSize(this.inputEl).updateWidth; + else + updateWidth(); + oldLength = this.inputEl.value.length; + }); } }; this.Blur(); diff --git a/src/UI/JsPlugin/InputAutoSize.ts b/src/UI/JsPlugin/InputAutoSize.ts index c81b50a4f..cd0da04f1 100644 --- a/src/UI/JsPlugin/InputAutoSize.ts +++ b/src/UI/JsPlugin/InputAutoSize.ts @@ -32,8 +32,8 @@ function createGhostElement() /** * 自适应input的输入框大小,请设置好样式,并加入到dom节点后在调用该函数,如果样式更新,请重新注册. * @param element input元素 - * @param [options] - * @returns + * @param [options] + * @returns */ export function AutoReSize(element: HTMLInputElement, options?: { minWidth: number; }) {