diff --git a/src/components/inputnumber/InputNumber.vue b/src/components/inputnumber/InputNumber.vue index a5189a331..4a18459bc 100755 --- a/src/components/inputnumber/InputNumber.vue +++ b/src/components/inputnumber/InputNumber.vue @@ -209,16 +209,8 @@ export default { }, spin(event, dir) { let step = this.step * dir; - let currentValue = this.value || 0; - let newValue = currentValue + step; - - if (this.min !== null && newValue < this.min) { - newValue = this.min; - } - - if (this.max !== null && newValue > this.max) { - newValue = this.max; - } + let currentValue = this.parseValue(this.$refs.input.$el.value) || 0; + let newValue = this.validateValue(currentValue + step); this.updateInput(newValue, 'spin'); this.updateModel(event, newValue); @@ -492,16 +484,19 @@ export default { updateValue(event, valueStr, operation) { if (valueStr != null) { let newValue = this.parseValue(valueStr); - let valid = this.isWithinRange(newValue); - - if (valid) { - this.updateInput(newValue, operation); - this.updateModel(event, newValue); - } + this.updateInput(newValue, operation); } }, - isWithinRange(value) { - return value == null || ((this.min == null || value > this.min) && (this.max == null || value < this.max)); + validateValue(value) { + if (this.min != null && value < this.min) { + return this.min; + } + + if (this.max != null && value > this.max) { + return this.max; + } + + return value; }, updateInput(value, operation) { let currentLength = this.$refs.input.$el.value.length; @@ -545,6 +540,12 @@ export default { }, onInputBlur(event) { this.focused = false; + + let newValue = this.validateValue(this.parseValue(this.$refs.input.$el.value)); + this.$refs.input.$el.value = this.formatValue(newValue); + this.$refs.input.$el.setAttribute('aria-valuenow', newValue); + this.updateModel(event, newValue); + this.$emit('blur', event); }, clearTimer() { @@ -714,4 +715,4 @@ export default { .p-fluid .p-inputnumber-buttons-vertical .p-inputnumber-input { width: 100%; } - \ No newline at end of file + diff --git a/src/views/inputnumber/InputNumberDemo.vue b/src/views/inputnumber/InputNumberDemo.vue index a18788fee..2c63e70cf 100755 --- a/src/views/inputnumber/InputNumberDemo.vue +++ b/src/views/inputnumber/InputNumberDemo.vue @@ -81,7 +81,7 @@