【发布时间】:2016-01-02 00:04:12
【问题描述】:
我需要一个 React Native TextInput 组件,它只允许输入数字字符 (0 - 9)。我可以将keyboardType 设置为numeric,这几乎可以让我在那里输入,除了句点 (.)。然而,这并不能阻止将非数字字符粘贴到字段中。
到目前为止,我想出的是使用OnChangeText 事件来查看输入的文本。我从文本中删除了所有非数字字符。然后将文本放在状态字段中。然后通过Value 属性更新TextInput。代码如下:sn-p。
<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})
}
这似乎有效,但它似乎是一个 hack。有没有其他方法可以做到这一点?
【问题讨论】:
-
从来没有让这个例子工作。您是否设法以其他方式解决它?
-
请注意,从 React Native 0.54 开始,此处建议的大多数答案都已失效:github.com/facebook/react-native/issues/18874(至少达到 0.56,这是撰写本文时的最新版本)。
-
@sumitkumarpradhan 该博客文章建议将键盘类型设置为“数字”,这实际上不会阻止文本输入。你可以复制粘贴任何你想要的东西到那里。
-
我在 TextInput 中使用
keyboardType='numeric'属性仅显示数字键盘 (duh),并使用正则表达式text.replace(/[^0-9]/g, '')替换文本,如下所示,以防止任何人在 TextInput 中粘贴字符串。到目前为止在 React Native v0.62 上运行良好
标签: react-native