input输入框,正则格式化手机号(344)

最近有个H5手机页面需要做344的格式化,以前没有注意到,写的时候发现问题很多,然后就找大神的代码,抄袭下。

1.html版本

//input框使用onkeyup事件
function formatPhoneOnkeyUp(mobile){
    var value = mobile.replace(/\D/g, '').substring(0, 11);
    var valueLen = value.length;
    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;
}

2.js版本。jsp可以用。

function formatPhoneOnkeyUp(mobile){
	    var value = mobile.replace(/\D/g, '').substring(0, 11);
	    var valueLen = value.length;
	    if (valueLen > 3 && valueLen < 8) {
	    	value = value.replace(/^(...)/g, "$1 ");
	    } else if (valueLen >= 8) {
	    	value = value.replace(/^(...)(....)/g, "$1 $2 ");
	    }
	    return value;
    }

最近发现这个代码有bug,移动光标删除数字或空格,光标会跳。好心塞。而且因为$符号的问题,方法没法在jsp里面使用。 好难过。再加个方法兼容jsp
这只是一个简单的方法,需要用的同学,请结合自己的业务修改。
代码是从阿里的一个js组建的源码里抄袭的一点。感觉很简单的代码,但是自己写的时候就bug很多。对js基础知识理解不深刻。
这就是差距!!!

你可能感兴趣的:(编程学习,技术,开发问题)