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 相关文章推荐
Jquery 快速构建可拖曳的购物车DragDrop
Nov 30 Javascript
基于dom编程中 动态创建与删除元素的使用
Apr 17 Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 Javascript
使用javascript获取页面名称
Dec 23 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
Sep 21 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
May 30 Javascript
微信小程序登录session的使用
Mar 17 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 Javascript
重置Redux的状态数据的方法实现
Nov 18 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
Jul 28 Javascript
React如何创建组件
Jun 27 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
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
php检查页面是否被百度收录
2015/10/28 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
php生成与读取excel文件
2016/10/14 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
JS文本框默认值处理详解
2013/07/10 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
Python lambda和Python def区别分析
2014/11/30 Python
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
python实现数据分析与建模
2019/07/11 Python
Python sorted排序方法如何实现
2020/03/31 Python
以下的初始化有什么区别
2013/12/16 面试题
高中运动会广播稿
2014/01/21 职场文书
腾讯广告词
2014/03/19 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
单位租房协议书样本
2014/10/30 职场文书
2014年资料员工作总结
2014/11/18 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL