From 74ab28e5a918d6e05257a6225148f784eda1f1b5 Mon Sep 17 00:00:00 2001 From: afc163 Date: Tue, 17 Jan 2017 15:19:19 +0800 Subject: [PATCH] Fix invalid input like '11x' ref ant-design/ant-design#4265 --- package.json | 2 +- src/mixin.js | 2 +- tests/index.js | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 55ffaa5b..21b41512 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rc-input-number", - "version": "3.0.0", + "version": "3.0.1", "description": "input-number ui component for react(web & react-native)", "keywords": [ "react", diff --git a/src/mixin.js b/src/mixin.js index 3948076b..e3bf2f1f 100644 --- a/src/mixin.js +++ b/src/mixin.js @@ -100,7 +100,7 @@ export default { setValue(v, callback) { // trigger onChange - const newValue = isNaN(v) || v === '' ? undefined : v; + const newValue = isNaN(parseFloat(v, 10)) ? undefined : parseFloat(v, 10); const changed = newValue !== this.state.value; if (!('value' in this.props)) { this.setState({ diff --git a/tests/index.js b/tests/index.js index 0bf373c8..6df7cf18 100644 --- a/tests/index.js +++ b/tests/index.js @@ -233,6 +233,16 @@ describe('inputNumber', () => { expect(onChangeFirstArgument).to.be(undefined); }); + it('input invalid string with number', () => { + Simulate.focus(inputElement); + Simulate.change(inputElement, { target: { value: '2x' } }); + expect(inputElement.value).to.be('2x'); + expect(onChangeFirstArgument).to.be('2x'); + Simulate.blur(inputElement); + expect(inputElement.value).to.be('2'); + expect(onChangeFirstArgument).to.be(2); + }); + it('input negative symbol', () => { example.setState({ min: -100 }); Simulate.focus(inputElement);