formatting input type number in react
import React from "react"; import PropTypes from "prop-types"; class NumberField extends React.Component { constructor(props) { super(props); this.state = { isEditing: false }; } onChange(event) { this.props.onChange(event.target.value); } toCurrency(number) { const formatter = new Intl.NumberFormat("sv-SE", { style: "decimal", currency: "SEK" }); return formatter.format(number); } toggleEditing() { this.setState({ isEditing: !this.state.isEditing }); } render() { return ( <div> <label htmlFor={this.props.name}>Income</label> {this.state.isEditing ? ( <input type="number" name={this.props.name} value={this.props.value} onChange={this.onChange.bind(this)} onBlur={this.toggleEditing.bind(this)} /> ) : ( <input type="text" name={this.props.name} value={this.toCurrency(this.props.value)} onFocus={this.toggleEditing.bind(this)} readOnly /> )} </div> ); } } NumberField.propTypes = { name: PropTypes.string, value: PropTypes.string, onChange: PropTypes.func }; export default NumberField;