From c87f7f730b96df11e96f8d2fae7c2d9bf9089a69 Mon Sep 17 00:00:00 2001 From: rhyme Date: Wed, 17 Jun 2020 11:52:52 +0800 Subject: [PATCH] update --- src/components/input-number/input-number.vue | 52 ++++++-------------- 1 file changed, 15 insertions(+), 37 deletions(-) diff --git a/src/components/input-number/input-number.vue b/src/components/input-number/input-number.vue index 9d584002..eac65ad2 100644 --- a/src/components/input-number/input-number.vue +++ b/src/components/input-number/input-number.vue @@ -16,7 +16,7 @@ import { oneOf, findComponentUpward } from '../../utils/assist'; import Emitter from '../../mixins/emitter'; + import mixinsForm from '../../mixins/form'; const prefixCls = 'ivu-input-number'; const iconPrefixCls = 'ivu-icon'; @@ -67,7 +67,7 @@ export default { name: 'InputNumber', - mixins: [ Emitter ], + mixins: [ Emitter, mixinsForm ], props: { max: { type: Number, @@ -87,7 +87,7 @@ }, value: { type: Number, - default: null, + default: 1 }, size: { validator (value) { @@ -147,7 +147,7 @@ `${prefixCls}`, { [`${prefixCls}-${this.size}`]: !!this.size, - [`${prefixCls}-disabled`]: this.disabled, + [`${prefixCls}-disabled`]: this.itemDisabled, [`${prefixCls}-focused`]: this.focused } ]; @@ -187,13 +187,8 @@ }, precisionValue () { // can not display 1.0 - // if(!this.currentValue) return this.currentValue; - // return this.precision ? this.currentValue.toFixed(this.precision) : this.currentValue; - let arr = (this.currentValue + '').split('.'); - if (this.precision && arr[1] && this.precision < arr[1].length) { - return this.currentValue.toFixed(this.precision); - } - return this.currentValue; + if(!this.currentValue) return this.currentValue; + return this.precision ? this.currentValue.toFixed(this.precision) : this.currentValue; }, formatterValue () { if (this.formatter && this.precisionValue !== null) { @@ -222,9 +217,10 @@ this.changeStep('down', e); }, changeStep (type, e) { - if (this.disabled || this.readonly) { + if (this.itemDisabled || this.readonly) { return false; } + const targetVal = Number(e.target.value); let val = Number(this.currentValue); const step = Number(this.step); @@ -261,8 +257,7 @@ if (val && !isNaN(this.precision)) val = Number(Number(val).toFixed(this.precision)); const {min, max} = this; - // #6245 - if ( val!==null && !this.activeChange ) { + if (val!==null) { if (val > max) { val = max; } else if (val < min) { @@ -298,7 +293,7 @@ } }, change (event) { - if (event.type == 'change') return; + if (event.type == 'change' && this.activeChange) return; if (event.type == 'input' && !this.activeChange) return; let val = event.target.value.trim(); @@ -311,24 +306,15 @@ this.setValue(null); return; } - if (event.type == 'input' && val.match(/^\-?\.?$|\.$/g)) return; // prevent fire early if decimal. If no more input the change event will fire later - - //#fixed when setting the precision val, input point cannot show problem - const precision = this.precision; - let cacheVal = this.currentValue; - if( precision ){ - const valMatchPointArr = (val+'').match(/\./g); - if( valMatchPointArr && valMatchPointArr.length >= 2 ){ - cacheVal = this.currentValue + '.'; - } - } + if (event.type == 'input' && val.match(/^\-?\.?$|\.$/)) return; // prevent fire early if decimal. If no more input the change event will fire later val = Number(val); - if (!isNaN(val) ) { + + if (!isNaN(val)) { this.currentValue = val; this.setValue(val); } else { - event.target.value = cacheVal; + event.target.value = this.currentValue; } }, changeVal (val) { @@ -353,14 +339,6 @@ }, currentValue (val) { this.changeVal(val); - //optimization - Solve the problem of cursor positioning inaccuracy - this.$nextTick(()=>{ - if( this.precision ){ - const currentValueLength = ( this.currentValue || 0 ).toString().length; - const precisionCursor = this.$refs.precisionCursor; - precisionCursor.selectionStart = precisionCursor.selectionEnd = currentValueLength; - } - }); }, min () { this.changeVal(this.currentValue);