JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置


Posted in Javascript onJune 02, 2020

JavaScript实现手机号码 3-4-4格式

手机号实现3-4-4格式相对来说还是比较简单的,监听input事件,实时的获取手机号码,然后根据手机号码的长度做截取和拼接的操作,即可实现手机格式的处理,实现格式的处理之后,我们还需要支持在指定光标进行新增和删除操作的时候光标不移动到最后面,因为手机号的格式使我们重置的,监听input事件重新赋值之后光标会移动到最后一位,解决这个问题的办法就是记录光标的位置并在value值格式重置之后重新设置光标的位置,好了,思路就是这样的,话不多说,直接上代码

// An highlighted block
 <input
  ref="inputRef"
  class="life-input"
  v-model="value"
  :maxlength="13"
  :placeholder="哈哈哈哈哈"
  :pattern="[0-9]*"
  @input="onInput"
 />

// javascript
onInput(){
 val = this.value.replace(/\D/g, '').substring(0, 11);
 const nowIndex = this.getCursortPosition(this.$refs.inputRef);
 if (valueLen > 3 && valueLen < 8) {
 this.value = `${val.substr(0, 3)} ${val.substr(3)}`;
 } else if (valueLen >= 8) {
 this.value = `${val.substr(0, 3)} ${val.substr(
  3,
  4
  )} ${val.substr(7)}`;
 } else {
 this.value = val;
 }
 // 重新赋值之后设置光标的位置
this.setCurIndex(nowIndex, this.curInputObj.value);
},

 getCursortPosition(element) {
 let CaretPos = 0;
 if (document.selection) {
 // 支持IE
 element.focus();
 const Sel = document.selection.createRange();
 Sel.moveStart('character', -element.value.length);
 CaretPos = Sel.text.length;
 } else if (element.selectionStart || element.selectionStart === '0'){
 // 支持firefox
 CaretPos = element.selectionStart;
 }
 return CaretPos
 },

 setCurIndex(nowIndex, value) {
 const len = value.length;
 setTimeout(() => {
 let pos = nowIndex;
 // 新增操作
 if (len > this.oldLen) {
  if (nowIndex === 4 || nowIndex === 9) {
  pos += 1;
  }
 } else if (len > this.oldLen) {
  // 删除操作
  if (nowIndex === 4 || nowIndex === 9) {
  pos -= 1;
  }
 }
 this.$refs.inputRef.selectionStart = pos;
 this.$refs.inputRef.selectionEnd = pos;
 this.oldLen = this.curInputObj.value.length;
 }, 0);
 },

总结

到此这篇关于JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置的文章就介绍到这了,更多相关js 手机号码3-4-4格式内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
THREE.JS入门教程(4)创建粒子系统
Jan 24 Javascript
JavaScript数组和循环详解
Apr 27 Javascript
jquery表单提交带错误信息提示效果
Mar 09 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 Javascript
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
在react-router4中进行代码拆分的方法(基于webpack)
Mar 08 Javascript
vue-cli项目使用mock数据的方法(借助express)
Apr 15 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
Dec 06 Javascript
node爬取新型冠状病毒的疫情实时动态
Feb 06 Javascript
js实现消灭星星(web简易版)
Mar 24 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
Jun 02 #Javascript
vue项目在webpack2实现移动端字体自适配功能
Jun 02 #Javascript
React实现类似淘宝tab居中切换效果的示例代码
Jun 02 #Javascript
实例分析javascript中的异步
Jun 02 #Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
Jun 02 #Javascript
js简单实现自动生成表格功能示例
Jun 02 #Javascript
JS中准确判断变量类型的方法
Jun 01 #Javascript
You might like
php页面缓存ob系列函数介绍
2012/10/18 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
PHP中list方法用法示例
2016/12/01 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
Python设计模式之代理模式实例
2014/04/26 Python
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
Python库urllib与urllib2主要区别分析
2014/07/13 Python
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
Django发送html邮件的方法
2015/05/26 Python
详解python时间模块中的datetime模块
2016/01/13 Python
python实现发送邮件功能代码
2017/12/14 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
浅谈Python 递归算法指归
2019/08/22 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
应届生新闻编辑求职信
2013/11/19 职场文书
优秀员工表扬信
2014/01/17 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
2015年护士节活动总结
2015/02/10 职场文书
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python