У меня есть TextInput, как включить только цифры меньше 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
})
}
1 ответ
Решение
Ваше выражение регулярного выражения также удаляет все точки (.
). Это приведет вас к потере любых поплавков. Если вы хотите включить поплавки, вам нужно добавить .
к вашему регулярному выражению.
Тогда все, что вам нужно сделать, это проанализировать ваш текст, чтобы плавать и проверить, является ли он ниже, чем максимальный плавать.
Образец
handleTextChange = (text) => {
const newAmount = parseFloat(text.replace(/[^1-9.]/g, ''));
this.setState({
billAmount: newAmount > 10000 ? '9999.99' : newAmount + ''
});
}