我使用TextInput
来只允许数字使用状态,它在android上工作,但在iOS上不工作。下面是我如何使用状态来只允许数字。
handleInputChange = (text) => {
if (/^\d+$/.test(text) || text === '') {
this.setState({
text: text
});
}
}
我的渲染方法
render = () => {
return (
<View style={{
flex: 0,
flexDirection: 'row',
alignItems: 'flex-end',
marginTop: 50
}}>
<View style={{ flex: 0, marginLeft: 10 }}>
<Text style={{ fontSize: 20}}>$</Text>
</View>
<View style={{flex: 1,}}>
<TextInput
onChangeText={this.handleInputChange}
value={this.state.text}
underlineColorAndroid='transparent'
autoCorrect={false}
spellCheck={false}
style={{ paddingLeft: 5, fontSize: 20 }} />
</View>
</View>
);
}
这只适用于Android,我猜是因为状态已经改变,react不会更新UI。
7条答案
按热度按时间yzuktlbb1#
请尝试以下操作:
1.标签
TextInput
中的keyboardType='numeric'
1.当你证明不要把数字与你的电脑键盘,请使用模拟器的键盘
1.如果仍然不工作,则放置此
textContentType='telephoneNumber'
zphenhs42#
正如Ravi Rupareliya所说,这是一个bug,当状态文本比当前的TextInput值短时,
TextInput
不会更新。看起来这个bug已经在react-native 0.57.RC
中修复了。现在我使用以下修复。sqxo8psd3#
React本机未提供keyboardType,它从键盘中删除标点符号。您需要使用带有replace方法的正则表达式从文本中删除标点符号并设置
keyboardType = 'numeric'
。正则表达式
/[- #*;,.〈〉{}[]/]/gi
示例代码
请检查零食链接
https://snack.expo.io/@vishal7008/1e004c
xmd2e60i4#
对我有效:
hkmswyz65#
虽然有用户输入,你可以改变键盘类型,为该特定的文本输入框,如这即数字或字母等...
s3fp2yjn6#
m528fe3b7#
javascript简单方法
replace(/[^0-9]/g, ''))}