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的获得各种控件Value的方法
Nov 19 Javascript
JS实现两个大数(整数)相乘
Apr 28 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
Mar 14 Javascript
浅析JS运动
Dec 28 Javascript
JavaScript字符串常用的方法
Mar 10 Javascript
特殊日期提示功能的实现方法
Jun 16 Javascript
JS之获取样式的简单实现方法(推荐)
Sep 13 Javascript
Bootstrap和Java分页实例第一篇
Dec 23 Javascript
VUE实现一个分页组件的示例
Sep 13 Javascript
Node.js进阶之核心模块https入门
May 23 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
Sep 18 Javascript
Vue.js自定义指令学习使用详解
Oct 19 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
国内咖啡文化
2021/03/03 咖啡文化
在PHP中执行系统外部命令
2006/10/09 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
禁止js文件缓存的代码
2010/04/09 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
为jQuery增加join方法的实现代码
2010/11/28 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
Vue-component全局注册实例
2018/09/06 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
金融专业毕业生推荐信
2013/11/26 职场文书
同事打架检讨书
2014/02/04 职场文书
商务英语专业求职信
2014/06/26 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
刑事案件上诉状
2015/05/23 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书