手机号码334格式化

在react开发中需要对手机号码进行格式化操作334(133 3333 3333)在这里总结一下

//手机号码分割
 fromvalue(mobile) {
        let value = mobile.replace(/\s+/g,'');
        let valueLen = value.length;
        console.log(valueLen);   
        if (valueLen > 3 && valueLen < 8) {
            value = `${value.substr(0, 3)} ${value.substr(3)}`;      
        } else if (valueLen >= 8) {  
            value = `${value.substr(0, 3)} ${value.substr(3, 4)} ${value.substr(7)}`;
        }
        return value;
       
    }
//身份证号码分割
 cardValue(cardNum) {
        let idCard = cardNum.replace(/\s+/g, '');
        let idCardLen = idCard.length;
        if (idCardLen > 3 && idCardLen < 7) {
            idCard = `${idCard.substr(0, 3)} ${idCard.substr(3)}`;
        } else if (idCardLen >= 7 && idCardLen < 11) {
            idCard = `${idCard.substr(0, 3)} ${idCard.substr(3, 3)} ${idCard.substr(6)}`;
        } else if (idCardLen >= 11 && idCardLen < 15) {
            idCard = `${idCard.substr(0, 3)} ${idCard.substr(3, 3)} ${idCard.substr(6, 4)} ${idCard.substr(10)}`;
        } else if (idCardLen >= 15) {
            idCard = `${idCard.substr(0, 3)} ${idCard.substr(3, 3)} ${idCard.substr(6, 4)} ${idCard.substr(10, 4)} ${idCard.substr(14)}`;
        }
        return idCard;
    }

上述代码存在的问题和解决办法
1.input 设置type属性
2.代码分割在大多浏览器都支持,在支付宝小程序中当type='tel'或者type='text'发现分割光标错误
3.这样写时输入数字按要求空格时当从中间删除某一位时发现光标回到最后

解决光标错位:在input中的 onChange={e => this.handleValue(e)}设置光标位置

 handleValue(e) {
        console.log();
        let id=e.target.id;
        let number = '';
        if (this.params['type'] === 'phone') {
            number = this.fromvalue(e.target.value);
        } else {
            number = this.cardValue(e.target.value);
        }
        this.setState({
            [e.target.name]: number,

        },()=>{
            var inpObj = document.getElementById(id);
            setTimeout(function(){
                console.log('test');
                inpObj.setSelectionRange(number.length, number.length);
            },20);

        });
    }

解决问题3 https://nosir.github.io/cleave.js/
使用 cleave进行改进,最近看一下源码

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,719评论 0 17
  • 城市的风光是夜间才展现出来,夜晚的灯光为城市的繁华锦上添花,然而到我从一盏又一盏灯下走过时,我不禁回头往去,这么多...
    琦零亦寒阅读 1,287评论 3 3
  • 你笑了! 你笑了,整个人一下明亮了起来。灿如朝阳初现,朗若明星升空,还带着一份难以形容的纯纯地真意,直逼入我柔软的...
    深涧幽兰_幽蘭阅读 2,844评论 13 19