【发布时间】:2020-07-15 08:32:01
【问题描述】:
我需要在TextInput(React Native)中验证带两位小数的数字,以防止插入第二个逗号。
现在我可以输入 123,12,23 并且它会破坏应用程序。
export default class Bottom extends Component {
constructor(props){
super(props)
this.state = {
sum:'',
}
this.handleInputChange = this.handleInputChange.bind(this);
}
handleInputChange(value) {
// validation of the value
this.setState({sum: value});
}
render () {
return (
<View>
<TextInput
style={styles.input}
keyboardType ="decimal-pad"
autoCorrect={false}
placeholder='add'
onChangeText={ this.handleInputChange }
value={this.state.sum}
/>
</View>
);
}
我尝试使用indexOf,但它删除了第一个逗号,而不是第二个
if (value.indexOf(',') === -1) {
this.setState({sum: value});
任何建议或正确答案的链接?
更新
我已经解决了:
handleInputChange(value) {
let lastValid = this.state.sum;
//var validNumber = new RegExp(/^\d*\.?\d*$/); // for dot
var validNumber = new RegExp(/^\d*\,?\d*$/); // for comma
if (validNumber.test(value)) {
lastValid = value;
} else {
value = this.state.sum;
}
this.setState({ sum: lastValid });
}
沙盒也更新了
沙盒:https://codesandbox.io/s/unruffled-blackwell-208p6?file=/src/App.js
【问题讨论】:
标签: javascript reactjs react-native validation