React Native TextInput 只接受数字字符

2024-03-26

我需要一个 React NativeTextInput只允许输入数字字符 (0 - 9) 的组件。我可以设置keyboardType to numeric除了句号 (.) 之外,这几乎让我可以输入内容。然而,这并不能阻止将非数字字符粘贴到字段中。

到目前为止我想出的是使用OnChangeText事件来查看输入的文本。我从文本中删除了所有非数字字符。然后将文本放入状态字段中。然后更新TextInput通过它的Value财产。下面的代码片段。

<TextInput 
  style={styles.textInput}
  keyboardType = 'numeric'
  onChangeText = {(text)=> this.onChanged(text)}
  value = {this.state.myNumber}
/> 

onTextChanged(text) {
  // code to remove non-numeric characters from text
  this.setState({myNumber: text})
}

这似乎有效,但似乎是一种黑客行为。还有其他方法可以做到这一点吗?


使用 RegExp 替换任何非数字比使用带有白名单的 for 循环更快,就像其他答案一样。

将其用于您的 onTextChange 处理程序:

onChanged (text) {
    this.setState({
        mobile: text.replace(/[^0-9]/g, ''),
    });
}

性能测试在这里:https://jsperf.com/removing-non-digit-characters-from-a-string https://jsperf.com/removing-non-digit-characters-from-a-string

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native TextInput 只接受数字字符 的相关文章

随机推荐