React Native 如何只允许 TextInput 上的数字?数字只是一个数字键盘
React Native how to only allow for numbers on TextInput? Numeric is just a numerical keyboard
我想输入 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 web浏览器中不生效。
对于物理键盘和 PC 网络浏览器,如何在复制粘贴时阻止除 0-9 数字以外的所有字符。
也许你可以简单地使用这个正则表达式 value.replace(/[^0-9]/, '')
如果您还想管理复制和过去,请使用全局标志:
value.replace(/[^0-9]/g, '')
我想输入 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 web浏览器中不生效。
对于物理键盘和 PC 网络浏览器,如何在复制粘贴时阻止除 0-9 数字以外的所有字符。
也许你可以简单地使用这个正则表达式 value.replace(/[^0-9]/, '')
如果您还想管理复制和过去,请使用全局标志:
value.replace(/[^0-9]/g, '')