我有一个TextInput,如何仅启用小于9999.99的数字?

时间:2018-07-13 10:26:49

标签: javascript react-native react-native-android react-native-textinput

我有一个文本输入,怎么可能只允许数字小于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 个答案:

答案 0 :(得分:2)

您的正则表达式表达式还会删除任何点(.)。这将导致您失去任何浮标。如果要启用浮点,则需要将.添加到正则表达式中。

然后您需要做的就是解析文本以浮动,并检查其是否低于最大浮动。

样品

handleTextChange = (text) => {
    const newAmount = parseFloat(text.replace(/[^1-9.]/g, ''));
    this.setState({
      billAmount: newAmount > 10000 ? '9999.99' : newAmount + ''
    });
  }