我喜欢禁用除文本输入中的数字以外的所有其他字符输入。我尝试了很多这样的例子,但所有这些例子都只适用于android,而不适用于iOS。下面是我试过的例子。
export default class App extends Component<Props> {
onChange(text) {
let newText = '';
let numbers = '0123456789';
for (var i = 0; i < text.length; i++) {
if (numbers.indexOf(text[i]) > -1) {
newText = newText + text[i];
}
}
this.setState({ data: { code: newText }})
}
state = {
data: {
code: '',
phoneNo: '',
otp: ''
}
}
render() {
const data = { ...this.state.data }
return (
<View style={styles.container}>
<TextInput
onChangeText={(value) => {
value = value.replace(/[^0-9]/g, "")
this.onChange(value)
}
}
placeholder='phone number'
value={data.code}
keyboard='phone-pad' />
<Text style={styles.instructions}>
{data.code}
</Text>
</View>
);
}
}
这段代码在android中运行得很好,但是当我在iOS上运行时,我仍然可以输入其他字符而不是数字。但是当我对日志进行控制台操作时,状态变量只有数值。即,
-
+()'.
这将显示在textinput上,但状态变量值将为空。
-
替换所有东西,只显示9。
-
如果我把
+(){}
9.文本输入显示
9+(){}
状态变量的值只有9。