diff --git a/src/core/view/components/input/index.vue b/src/core/view/components/input/index.vue index 29b0d0732d9b39ef995b7d38415c520f3414e8fa..d8d9241000fb72aa76230818b9cd3f0d1175ca55 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