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错误处理
Feb 03 Javascript
JavaScript中几种排序算法的简单实现
Jul 29 Javascript
Input文本框随着输入内容多少自动延伸的实现
Feb 15 Javascript
Vue 2.x教程之基础API
Mar 06 Javascript
如何开发出更好的JavaScript模块
Dec 22 Javascript
解决easyui日期时间框ie的兼容的问题
Mar 01 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
Aug 19 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
May 20 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
javascript canvas API内容整理
Feb 16 Javascript
node.js基础知识汇总
Aug 25 Javascript
利用JS判断元素是否为数组的方法示例
Jan 08 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
php网页后退不再出现过期
2007/03/08 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
js option删除代码集合
2008/11/12 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
中英文求职信范文
2014/01/27 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
房屋所有权证明
2014/10/20 职场文书
鸟的天堂导游词
2015/01/31 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
入党申请书怎么写?
2019/06/21 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android