У меня есть 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 + ''
    });
  }
Другие вопросы по тегам