我有一个 TextInput,如何只启用小于 9999.99 的数字?
I have a TextInput, how to enable only numbers less than 9999.99?
我有一个文本输入,怎么可能只允许小于 9999.99 的数字?
<TextInput
autoFocus
style={styles.inputStyle}
placeholder="0.00"
keyboardType="numeric"
maxLength={9}
autoCapitalize="none"
placeholderTextColor={Colors.white}
underlineColorAndroid={Colors.transparent}
value={billAmount}
onChangeText={this.handleTextChange}
selection={{start: cursor, end: cursor}}
/>
这里是 handleTextChange 函数:
handleTextChange = (text) => {
const { cursor, billAmount } = this.state
let newText
newText = text.replace(/[^1-9]/g, '')
this.setState({
billAmount: newText
})
}
您的正则表达式也会删除所有点 (.
)。这将导致您失去任何浮动。如果你想启用浮动,你需要将 .
添加到你的正则表达式中。
然后您需要做的就是将文本解析为浮动并检查它是否低于最大浮动。
示例
handleTextChange = (text) => {
const newAmount = parseFloat(text.replace(/[^1-9.]/g, ''));
this.setState({
billAmount: newAmount > 10000 ? '9999.99' : newAmount + ''
});
}
我有一个文本输入,怎么可能只允许小于 9999.99 的数字?
<TextInput
autoFocus
style={styles.inputStyle}
placeholder="0.00"
keyboardType="numeric"
maxLength={9}
autoCapitalize="none"
placeholderTextColor={Colors.white}
underlineColorAndroid={Colors.transparent}
value={billAmount}
onChangeText={this.handleTextChange}
selection={{start: cursor, end: cursor}}
/>
这里是 handleTextChange 函数:
handleTextChange = (text) => {
const { cursor, billAmount } = this.state
let newText
newText = text.replace(/[^1-9]/g, '')
this.setState({
billAmount: newText
})
}
您的正则表达式也会删除所有点 (.
)。这将导致您失去任何浮动。如果你想启用浮动,你需要将 .
添加到你的正则表达式中。
然后您需要做的就是将文本解析为浮动并检查它是否低于最大浮动。
示例
handleTextChange = (text) => {
const newAmount = parseFloat(text.replace(/[^1-9.]/g, ''));
this.setState({
billAmount: newAmount > 10000 ? '9999.99' : newAmount + ''
});
}