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 相关文章推荐
javascript Onunload与Onbeforeunload使用小结
Dec 31 Javascript
GRID拖拽行的实例代码
Jul 18 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
Dec 09 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
Jun 23 Javascript
jQuery获取选中内容及设置元素属性的方法
Jul 09 Javascript
javascript中sort()的用法实例分析
Jan 30 Javascript
移动端日期插件Mobiscroll.js使用详解
Dec 19 Javascript
移动设备手势事件库Touch.js使用详解
Aug 18 Javascript
ES6中的Promise代码详解
Oct 09 Javascript
动态加载JavaScript文件的3种方式
May 05 Javascript
详解JS实现系统登录页的登录和验证
Apr 29 Javascript
js单线程的本质 Event Loop解析
Oct 29 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
PHP insert语法详解
2008/06/07 PHP
深入array multisort排序原理的详解
2013/06/18 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
node.js的事件机制
2017/02/08 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
Python编程之event对象的用法实例分析
2017/03/23 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
python web基础之加载静态文件实例
2018/03/20 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
国际商务专业学生个人的自我评价
2013/09/28 职场文书
药剂学专业应届生自荐信
2013/09/29 职场文书
租赁协议书范本
2014/04/22 职场文书
委托书如何写
2014/08/30 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
居委会工作总结2015
2015/05/18 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB