From 0805a3862b4b614ec8ba139922f194ca9b2b5010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=95=E9=87=8F?= Date: Fri, 23 Nov 2018 17:13:31 +0800 Subject: [PATCH] fix(Input): bug of value=0 with htmlType=number --- src/input/base.jsx | 3 ++- test/input/index-spec.js | 14 ++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/input/base.jsx b/src/input/base.jsx index 2e67eb1ae7..fb0b547c95 100644 --- a/src/input/base.jsx +++ b/src/input/base.jsx @@ -137,7 +137,8 @@ class Base extends React.Component { }); } - if (this.props.htmlType === 'number') { + // Number('') = 0 + if (value && this.props.htmlType === 'number') { value = Number(value); } diff --git a/test/input/index-spec.js b/test/input/index-spec.js index cbb271af8d..e7f21f795d 100644 --- a/test/input/index-spec.js +++ b/test/input/index-spec.js @@ -171,6 +171,7 @@ describe('input', () => { return ( { assert(this.refs.input.getInstance().getInputNode() !== undefined) + done(); }}/> ); } @@ -178,20 +179,25 @@ describe('input', () => { let wrapper = mount(); wrapper.find('input').simulate('focus'); - - done(); }); it('should support htmlType=number', (done) => { let onChange = (value) => { assert(value === 20); + done(); }, wrapper = mount(); wrapper.find('input').simulate('change', {target: {value: '20'}}); - - done(); }); + it('should support htmlType=number value="" ', (done) => { + let onChange = (value) => { + assert(value === ''); + done(); + }, wrapper = mount(); + + wrapper.find('input').simulate('change', {target: {value: ''}}); + }); }); describe('react api', () => { it('calls componentWillReceiveProps', (done) => {