-
Couldn't load subscription status.
- Fork 49.7k
Description
Do you want to request a feature or report a bug?
Bug
What is the current behavior?
The following code example works well with text input type, but allows inputs like 012 or 0012 to be entered when using the number input type.
The console.log line always runs and shows the right value, and the App state is also correct when checked with React Developer Tools. It's only that the controlled input is not being "controlled" somehow.
class App extends Component {
constructor() {
super()
this.state = {
value: '',
}
}
handleChange = e => {
const value = e.target.value
const num = parseInt(value, 10)
console.log(num)
this.setState({ value: isNaN(num) ? '' : num })
}
render() {
return (
<div className="App">
<input type="number" value={this.state.value} onChange={this.handleChange} />
</div>
)
}
}
Present with latest create react app or in this jsfiddle: https://jsfiddle.net/Lhj0j3ok/
Not present in this jsfiddle: https://jsfiddle.net/mayankshukla5031/08ecc97d/
What is the expected behavior?
Input should reflect the state, thus not allowing strings like 012, etc. to be displayed.
Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?
Latest create-react-app:
"react": "15.6.1",
"react-dom": "15.6.1",
"react-scripts": "1.0.11"
Browser: Chrome 60.0.3112.101
OS X 10.12.6
Present with latest create react app or in this jsfiddle: https://jsfiddle.net/Lhj0j3ok/
Not present in this jsfiddle: https://jsfiddle.net/mayankshukla5031/08ecc97d/