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