如何自定义TextInput以确保用户仅输入纯数字,禁止逗号点号等其他符号?
TextInput限制仅能输入纯数字的实现方法
你当前设置的keyboardType="numeric"仅能唤起数字键盘,但不同系统、不同机型的数字键盘仍可能保留小数点、逗号等特殊字符输入入口,需要结合输入内容过滤实现严格限制,具体修改如下:
- 第一步:修改
onChangeText回调逻辑,通过正则表达式过滤所有非0-9的字符 - 第二步(可选,iOS端优化):将
keyboardType调整为number-pad,进一步精简键盘展示,去除多余符号按键
修改后的完整代码示例:
<TextInput onChangeText={text => { // 替换所有非数字字符为空 const filteredText = text.replace(/[^0-9]/g, '') setTextInputValue(filteredText) }} value={textInputValue} placeholder="perso" keyboardType="numeric" style={styles.inputRE1} />
如果需要额外限制输入长度,可以在过滤逻辑后追加截取逻辑,比如限制最多输入10位时,将赋值逻辑改为setTextInputValue(filteredText.slice(0, 10))即可。
内容的提问来源于stack exchange,提问作者Sevlac
相关产品推荐
相关产品推荐

