React Native之TextInput限制只能输入数字和小数

今天做了一个类似计算器的功能的,但是在输入TextInput遇到了这个问题了。那么我这次来写一下关于这个该怎么整理
import React from 'react';
import { StyleSheet, Text, View, Image, Dimensions, TextInput, TouchableOpacity, ScrollView } from 'react-native';

import Toast from '../../utils/ToastUtils'
import ToCalculate from './ToCoating'
export default class WallBrick extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            LongSize: '',
        }
    }

    chkPrice(obj) { //方法1
        obj = obj.replace(/[^\d.]/g, "");
        //必须保证第一位为数字而不是. 
        obj = obj.replace(/^\./g, "");
        //保证只有出现一个.而没有多个. 
        obj = obj.replace(/\.{2,}/g, ".");
        //保证.只出现一次,而不能出现两次以上 
        obj = obj.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
        return obj;
    }
    chkLast(obj) {
        // 如果出现非法字符就截取掉 
        if (obj.substr((obj.length - 1), 1) == '.')
            obj = obj.substr(0, (obj.length - 1));
    }
    render() {
        return (
            <View style={{ flex: 1 }}>
             
                <ScrollView style={{ flex: 1 }}>
                    <View style={{ flex: 1 }}>
                        <View style={{ flex: 1 }}>
                            <View style={{ flex: 1 }}>
                                <TextInput underlineColorAndroid='transparent'
                                    placeholder=""
                                    placeholderTextColor='#8c8d8d'
                                    multiline={false}
                                    maxLength={6}
                                    keyboardType='numeric'

                                    value={this.state.LongSize} //方法2
                                    onChangeText={(text) => { 
                                        this.setState({ LongSize: this.chkPrice(text) })
                                    }}//方法3
                                >
                                </TextInput>
                            </View>
                            <View style={styles.itemTextView}>
                                <Text style={styles.itemText}>米</Text>
                            </View>
                        </View>
                    </View>

                   
                </ScrollView>

            </View>);
    }
}
方法1:是限制里面的text输入的限制反馈回去的只是一些数字或者是小数点,其中小数点不会多于2个。所以如果输入是1r.54实际上面返回的值是1.54,所以这个方法返回了。
然后设置一个state关于text
那么方法3:的作用是进行时时监听,其实就是在改变的监听Text的变化。那么在进行一次设置setstate然后在进行方法2:的设置就设置成明面上面的限制了。
然后方法2:的作用是设置输入的值。所以这样就容易简单的做到了限制了。
如果这个方法对你有作用的话。点一个赞。感谢不已!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值