美文网首页react-native
react-native TextInput只能输入纯数字

react-native TextInput只能输入纯数字

作者: 萤火虫叔叔 | 来源:发表于2018-05-10 15:08 被阅读5178次

如下所示,设置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版本。

相关文章

网友评论

    本文标题:react-native TextInput只能输入纯数字

    本文链接:https://www.haomeiwen.com/subject/hjnzrftx.html