【问题标题】:React Native how to only allow for numbers on TextInput? Numeric is just a numerical keyboardReact Native如何只允许TextInput上的数字?数字只是一个数字键盘
【发布时间】:2021-06-09 10:19:56
【问题描述】:

我想输入 6 位数字作为验证输入,但我对非数字字符的文本输入有疑问。

首先,我做到了

<TextInput maxLength={6} style={styles.textInput} onChangeText={value => this.onTextChanged(value) }  value={this.state.codeInput} keyboardType='numeric' />

而且我有一个检测非数字字符的功能。

onTextChanged(value) {
    // code to remove non-numeric characters from text
    this.setState({ codeInput: value.replace(/[- #*;,.<>\{\}\[\]\\\/]/gi, '') });
  }

在移动设备中,它只打开带有点字符的数字键盘。甚至,用户按下点字符。功能不允许这样做,但我的问题是物理键盘、复制粘贴和在网络浏览器中打开。我可以在网络浏览器中输入任何内容。功能在电脑网络浏览器中不起作用。

如何在物理键盘和 PC 网络浏览器上复制粘贴时阻止除 0-9 数字之外的所有字符。

【问题讨论】:

  • 你需要使用onChange事件。
  • 如果可能,请提供一个jsfiddle/codepen。

标签: regex react-native textinput


【解决方案1】:

也许你可以简单地使用这个正则表达式value.replace(/[^0-9]/, '')

如果您还想管理副本和过去,请使用全局标志:
value.replace(/[^0-9]/g, '')

【讨论】:

  • 谢谢。它可以作为输入,我该如何解决复制粘贴问题?
  • 在正则表达式末尾添加全局标志,这样value.replace(/[^0-9]/g, '')
猜你喜欢
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多