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的强大选择器小结
Dec 27 Javascript
Javascript的一种模块模式
Sep 08 Javascript
自定义的一个简单时尚js下拉选择框
Nov 20 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
Angular2关于@angular/cli默认端口号配置的问题
Jul 15 Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 Javascript
详解webpack4.x之搭建前端开发环境
Mar 28 Javascript
JS实现马赛克图片效果完整示例
Apr 13 Javascript
微信小程序实现下滑到底部自动翻页功能
Mar 07 Javascript
vue 判断元素内容是否超过宽度的方式
Jul 29 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 Javascript
js前端图片加载异常兜底方案
Jun 21 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
Django实现内容缓存实例方法
2020/06/30 Python
常用的10个Python实用小技巧
2020/08/10 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
通信工程毕业生自荐信
2013/11/01 职场文书
艺术设计专业个人求职信范文
2013/12/11 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
投资建议书模板
2014/05/12 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
未婚证明书模板
2014/10/08 职场文书
投标单位介绍信
2015/05/05 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript