Commit 9ca05a64dab13ac7212d3a161fd44a4c5f808231
Committed by
GitHub
Merge pull request #2059 from SergioCrisostomo/add-input-event
fire change on "input" event
Showing
1 changed file
with
9 additions
and
9 deletions
Show diff stats
src/components/input-number/input-number.vue
| ... | ... | @@ -24,6 +24,7 @@ |
| 24 | 24 | @focus="focus" |
| 25 | 25 | @blur="blur" |
| 26 | 26 | @keydown.stop="keyDown" |
| 27 | + @input="change" | |
| 27 | 28 | @change="change" |
| 28 | 29 | :readonly="readonly || !editable" |
| 29 | 30 | :name="name" |
| ... | ... | @@ -38,9 +39,6 @@ |
| 38 | 39 | const prefixCls = 'ivu-input-number'; |
| 39 | 40 | const iconPrefixCls = 'ivu-icon'; |
| 40 | 41 | |
| 41 | - function isValueNumber (value) { | |
| 42 | - return (/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9][0-9]*$)|(^-?0{1}$)/).test(value + ''); | |
| 43 | - } | |
| 44 | 42 | function addNum (num1, num2) { |
| 45 | 43 | let sq1, sq2, m; |
| 46 | 44 | try { |
| ... | ... | @@ -256,11 +254,13 @@ |
| 256 | 254 | change (event) { |
| 257 | 255 | let val = event.target.value.trim(); |
| 258 | 256 | |
| 259 | - const max = this.max; | |
| 260 | - const min = this.min; | |
| 257 | + if (event.type == 'input' && val.match(/^\-?\.?$|\.$/)) return; // prevent fire early if decimal. If no more input the change event will fire later | |
| 258 | + if (event.type == 'change' && Number(val) === this.currentValue) return; // already fired change for input event | |
| 261 | 259 | |
| 262 | - if (isValueNumber(val)) { | |
| 263 | - val = Number(val); | |
| 260 | + const {min, max} = this; | |
| 261 | + const isEmptyString = val.length === 0; | |
| 262 | + val = Number(val); | |
| 263 | + if (!isNaN(val) && !isEmptyString) { | |
| 264 | 264 | this.currentValue = val; |
| 265 | 265 | |
| 266 | 266 | if (val > max) { |
| ... | ... | @@ -275,8 +275,8 @@ |
| 275 | 275 | } |
| 276 | 276 | }, |
| 277 | 277 | changeVal (val) { |
| 278 | - if (isValueNumber(val) || val === 0) { | |
| 279 | - val = Number(val); | |
| 278 | + val = Number(val); | |
| 279 | + if (!isNaN(val)) { | |
| 280 | 280 | const step = this.step; |
| 281 | 281 | |
| 282 | 282 | this.upDisabled = val + step > this.max; | ... | ... |