Commit 9ca05a64dab13ac7212d3a161fd44a4c5f808231

Authored by Aresn
Committed by GitHub
2 parents 7309b434 8115f0b8

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;
... ...