react-native TextInput只能输入纯数字

如下所示,设置keyboardType='numeric',用户输入时就会弹出数字键盘,如果用户通过粘贴或者其他方式输入非数字时,通过正则表达式把非数字替换成空字符串text.replace(/[^\d]+/, ''),达到只能输入数字的目的。

代码如下:

<TextInput
  style={{height: 40, borderColor: 'gray', borderWidth: 1}}
  onChangeText={(text) => {
    const newText = text.replace(/[^\d]+/, '');
    this.setState({inputValue: newText})
  }}
  value={this.state.inputValue}
  keyboardType='numeric'
/>

————————2018-7-27更新分割线————————

评论区有程序猿反映在iOS上无效,我写了个实例测试。下面贴出完整代码及效果图,供大家学习。

  • 效果图:


    效果图.gif
  • 完整代码(新建一个文件,全部粘贴即可):
import React, { Component } from 'react';
import {
  View,
  TextInput,
} from 'react-native';

export default class Demo extends Component {

 constructor(props) {
    super(props);
    this.state = {
      inputValue: "",
    }
  }

  render() {
    return (
      <View>
        <TextInput
          style={{height: 40, borderColor: 'gray', borderWidth: 1}}
          onChangeText={(text) => {
            const newText = text.replace(/[^\d]+/, '');
            //可以打印看看是否过滤掉了非数字
            console.log(newText)
            this.setState({inputValue: newText})
          }}
          value={this.state.inputValue}
          //为了方便测试时输入字母,属性(keyboardType)不设置,实际使用时加上
          // keyboardType='numeric'
        />
      </View>
    )
  }  
}
  • 设备信息和版本号
    测试手机:iPhone 6 (真机,而不是模拟器)
    react-native:0.51.0

注:如果没有达到效果,可以尝试换个环境,换真机测试,或者更换react-native版本。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,159评论 19 139
  • TextInput是一个允许用户在应用中通过键盘输入文本的基本组件。本组件的属性提供了多种特性的配置,譬如自动完成...
    亭止阅读 8,536评论 1 0
  • 对React-Native的学习,从熟悉基本控件开始。 View 属性方法 序号名称属性Or方法类型说明 1 ac...
    诺花生阅读 4,351评论 0 0
  • http://www.cnblogs.com/Sweet-Candy/p/5695389.html React-N...
    心淡然如水阅读 9,873评论 0 0
  • 【so easy之】如果想把一张白底图片变成透明底,可以用PS: ...
    狗屁东西阅读 1,540评论 0 0

友情链接更多精彩内容