From d0a3505c3cad325dd2d750ea5518be4457004186 Mon Sep 17 00:00:00 2001 From: DCloud_LXH <283700113@qq.com> Date: Thu, 17 Jun 2021 16:17:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20input=E5=90=8C=E6=97=B6=E8=AE=BE?= =?UTF-8?q?=E7=BD=AEnumber=E3=80=81maxlength=E3=80=81verifyNumber=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=AD=A4=E6=97=B6=E8=BE=93=E5=85=A5=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E5=86=85=E9=83=A8valueSync=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/view/components/input/index.vue | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/core/view/components/input/index.vue b/src/core/view/components/input/index.vue index 29b0d0732d..d8d9241000 100644 --- a/src/core/view/components/input/index.vue +++ b/src/core/view/components/input/index.vue @@ -178,10 +178,23 @@ export default { }) }, _onInput ($event, force) { + let outOfMaxlength = false + if (this.composing) { return } + // type="number" 不支持 maxlength 属性,因此需要主动限制长度。 + if (this.inputType === 'number') { + const maxlength = parseInt(this.maxlength, 10) + if (maxlength > 0 && $event.target.value.length > maxlength) { + $event.target.value = $event.target.value.slice(0, maxlength) + this.valueSync = $event.target.value + // 字符长度超出范围不触发 input 事件 + outOfMaxlength = true + } + } + if (~NUMBER_TYPES.indexOf(this.type)) { // 在输入 - 负号 的情况下,event.target.value没有值,但是会触发校验 false this.valid = this.$refs.input.validity && this.$refs.input.validity.valid @@ -200,16 +213,7 @@ export default { } } - // type="number" 不支持 maxlength 属性,因此需要主动限制长度。 - if (this.inputType === 'number') { - const maxlength = parseInt(this.maxlength, 10) - if (maxlength > 0 && $event.target.value.length > maxlength) { - $event.target.value = $event.target.value.slice(0, maxlength) - this.valueSync = $event.target.value - // 字符长度超出范围不触发 input 事件 - return - } - } + if (outOfMaxlength) return this.$triggerInput($event, Object.assign({ value: this.valueSync -- GitLab