vue 手机号(334分隔)
条件:
要求:
1.手机号不管是直接输入还是复制粘贴都保持334
2.点击字符中间,光标就在那个位置,点击删除键,光标就随之向前移动一位;同时在光标处添加数字光标往后移动一位
代码如下:
涉及三个知识点:
1、keydown :当按钮被按下时,发生 keydown 事件。
2、keyup:当按钮被松开时,发生 keyup 事件。它发生在当前获得焦点的元素上。
3、paste: 当向 p 元素上粘贴文本内容时执行 JavaScript (注意 contenteditable 设置为 “true”)。
例如:<p contenteditable="true" onpaste="myFunction()">尝试在段落中粘贴内容。</p>
<template><div class="mobile_input_box flex_align_center flex_SB"><input v-model="mobile" type="tel" ref="mobile" maxlength="13" placeholder="请输入手机号"@keyup="keyupPaste" @paste="keyupPaste" @keydown="onKeydown" /></div>
</template>
<script> export default {data() {return { mobile: "", }}, methods: {onKeydown(e) { var input = e.target;var selectionLeft = input.value.substring(input.selectionStart - 1, input.selectionEnd);var selectionRight = input.value.substring(input.selectionStart, input.selectionEnd + 1);//碰到空格,往前移动一位光标var selectionStart = input.selectionStart;if (e.keyCode === 8 && selectionLeft === " " && selectionRight) {input.selectionStart = selectionStart - 1;input.selectionEnd = input.selectionStart;e.preventDefault();}},keyupPaste(e) { this.formatMobile(e)this.mobile = this.$refs.mobile.value},formatMobile(e) {let val = this.$refs.mobile.value let selStart = this.$refs.mobile.selectionStart let mobileLen = val.lengthlet value = this.getValue(e, val).substr(0, 11) // 获取输入/粘贴内容,并截取前11位let len = value.lengthif (len > 3 && len < 8) {value = value.replace(/^(\d{3})/g, '$1 ')} else if (len >= 8) {value = value.replace(/^(\d{3})(\d{4})/g, '$1 $2 ')}this.$refs.mobile.value = valueif (selStart !== mobileLen) {// 设置光标位置this.$refs.mobile.selectionStart = this.$refs.mobile.selectionEnd = selStart}let aa = this.$refs.mobile.value.replace(/\D/g, '')if (aa.length == 11) {alert(aa.length) //这里可以做满足条件后的处理}},getValue(e, val) {let value = ''if (e.type === 'keyup') {value = val.replace(/\D/g, '');} else if (e.type === 'paste') {// window.clipboardData:IE浏览器获取剪贴板数据对象// event.clipboardData:Chrome, Firefox, Safari获取剪贴板数据对象let clipboardData = event.clipboardData || window.clipboardData;value = clipboardData.getData('Text'); // 获取剪贴板text格式的数据value = value.replace(/\D/g, '')}return value}, }
}
</script>
参考代码 https://www.cnblogs.com/qdwyy/p/10854014.html
vue 手机号(334分隔)相关推荐
- vue,原生html—input框输入银行卡4位分开、手机号344分隔
vue,原生html-input框输入银行卡4位分开.手机号344分隔 效果图: 1.uni-app写input框 (注意type类型不能为number,这是一个坑,我理解到-数字框只能输入数字不能显 ...
- vue手机号中间四位加*号
vue手机号中间四位加*号 1.在methods里面写一个方法: mobileStr(str) {if(str.length>7){return str.substring(0,3)+'**** ...
- Vue手机号正则匹配,姓名加密展示
一丶手机号 (1)正则匹配 if (!/^1[3|4|5|6|7|8|9]\d{9}$/.test(13807999985)) {console.log(resultPhone);//138****9 ...
- el vue 手机号_Vue实现数字输入框中分割手机号码实例教程
本文主要介绍了Vue实现数字输入框中分割手机号码的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧,希望能帮助到大家. 需求 在移动端弹出系统数字键盘,输入手机号码的时 ...
- el vue 手机号_Vue 正则表达式验证邮箱和手机号码
el-form绑定:rules="addFormRules": el-form-item绑定prop="name" 2.正则表达式验证邮箱和手机号码 expor ...
- Vue.js实现可配置的登录表单
表单是后台项目业务中的常用组件,这次重构了登录功能以满足登录方式可配置的需求,在此记录和分享一下. 业务场景 在之前,项目只支持手机号+密码登录,前端是直接把表单写死的,后来有客户希望能支持验证码登录 ...
- 将苹果通讯录.contacts文件导入安卓通讯录提取.contacts文件联系人的教程
我们知道苹果的通讯录是.contacts文件我们备份后,但是苹果手机丢失了怎么利用这个文件恢复到新买的安卓通讯录呢?其实这个并不简单,我们用记事本打开看到里面的内容乱码,明显加过密,所以不能直接手动恢 ...
- 吉信通短信接口(HTTP协议) java
最近学习了吉信通接口的内容,做了简单的短信对接功能.和大家分享一下吉信通短信接口(HTTP协议).吉信通官网上也有相关的代码示例. 吉信通官网:http://www.winic.org/api/Sen ...
- Vue2积分商城PC端项目(一)
目录 一.清空项目非必要文件 二.样式初始化 三.网站结构布置 四.网站数据请求模块 4.1.发起请求 4.2.代理配置 4.3.API与Request封装 4.4.发起请求 五.头部组件 5.1.版 ...
最新文章
- 如何把PB程序的数据库从ASA迁移到ASE?
- 如何在 Linux 中查看目录大小?
- 各种语言下 static 详解
- @autowired注解原理_SpringBoot注解大全,收藏一波!!!
- Linux Shell 快捷键
- 2017最新顺口溜出炉(超级经典)!
- vue vant Area组件使用详解
- html5 Canvas 标签介绍
- 区块链组织架构_区块链可以加速开放组织的5种方式
- matlab算法用python做_机器学习笔记—朴素贝叶斯算法实现(matlab/python)
- 快速学懂pandas
- MySQL数据库索引查询
- STM32F407控制舵机
- matlab二阶系统设置参数,一阶和二阶系统响应的matlab制作
- macOS: 卸载 Flash Player 迎接 2021
- w10系统的服务器属性在哪,DNS设置在哪里、设置什么好?Win10电脑DNS设置指南
- 学习日志day44(2021-09-08)(1、Ajax跨域操作 2、Ajax接收json数据 3、JQuery和Ajax 4、使用JavaScript模板简化操作)
- svg图片如何引入vue
- 【Linux】scp命令基本使用
- 华三交换机 RRPP V7版本
热门文章
- RTKlib PPP代码解析
- 鸿蒙os bate,鸿蒙OS 2.0Beta
- .NET CORE 5.0 MVC 获取wwwroot路径
- Exception in thread “main” java.lang.NoClassDefFoundError: freemarker/template/Configuration 代码生成报错
- App错误日志记录到本地
- vim之vim-adventures 综述
- PostgreSQL数据库专家唐成:用最专业的服务解决用户最大的痛点
- JoVE软体机器人组专刊征稿,拍视频即可发SCI
- uni-app 微信小程序分享功能
- kotlin - 线程 Thread