1、在main.js中直接加入代码:

import Vue from 'vue'

Vue.directive("input-limit", {
bind(el, binding) {
var wins_0 = /[^\d]/g //整数判断
var wins_1 = /[^\d^\.]/g //小数判断
var flag = true;
var points = 0;
var lengths = 0
var remainder = 0
var no_int = 0
const target = el instanceof HTMLInputElement ? el : el.querySelector("input");
target.addEventListener("compositionstart", e => {
flag = false;
});
target.addEventListener("compositionend", e => {
flag = true;
});
target.addEventListener("input", e => {
setTimeout(function() {
if (flag) {
if (binding.value == 0) {
if (wins_0.test(e.target.value)) {
e.target.value = e.target.value.replace(wins_0, "");
e.target.dispatchEvent(new Event("input")) //手动更新v-model值
}
}
if (binding.value == 1) {
if (wins_0.test(e.target.value.toString().replace(/\d+\.(\d*)/, '$1'))) {
remainder = true
}
if ((e.target.value.split('.')).length - 1 > 1) {
points = true
}
if (e.target.value.toString().split(".")[1] != undefined) {
if (e.target.value.toString().split(".")[1].length > 1) {
lengths = true
}
}
if (e.target.value.toString().indexOf(".") != -1) {
no_int = false
} else {
no_int = true
}
if (wins_1.test(e.target.value) || lengths || points || remainder) {
if (!no_int) {
e.target.value = e.target.value.replace(wins_1, "").replace('.', '$#$').replace(/\./g, '').replace(
'$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').substring(0, e.target.value.indexOf(
".") + 2)
} else {
e.target.value = e.target.value.replace(wins_0, "")
}
e.target.dispatchEvent(new Event("input"))
}
} if (binding.value == 2) {
if (wins_0.test(e.target.value.toString().replace(/\d+\.(\d*)/, '$1'))) {
remainder = true
}
if ((e.target.value.split('.')).length - 1 > 1) {
points = true
}
if (e.target.value.toString().split(".")[1] != undefined) {
if (e.target.value.toString().split(".")[1].length > 2) {
lengths = true
}
}
if (e.target.value.toString().indexOf(".") != -1) {
no_int = false
} else {
no_int = true
}
if (wins_1.test(e.target.value) || lengths || points || remainder) {
if (!no_int) {
e.target.value = e.target.value.replace(wins_1, "").replace('.', '$#$').replace(/\./g, '').replace(
'$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').substring(0, e.target.value.indexOf(
".") + 3)
} else {
e.target.value = e.target.value.replace(wins_0, "")
}
e.target.dispatchEvent(new Event("input"))
}
}
}
}, 0)
})
}
})

2、然后就可以直接使用了:

// v-input-limit='number'
// eg: v-input-limit='2' 代表可以输入2位小数的数字
<el-input v-input-limit='2' v-model="amountVal" placeholder="请输入金额"></el-input>

转载:https://blog.csdn.net/weixin_43839317/article/details/110486021

最新文章

  1. 使用etree.HTML的编码问题
  2. PHP文件大小格式化函数合集
  3. node.js 基础学习笔记3 -express
  4. Unity加载模块深度解析(Shader)
  5. swift开发多线程篇 - 多线程基础
  6. simple-LDAP-auth
  7. Andoird自定义ViewGroup实现竖向引导界面
  8. COJ0702 数学(三)
  9. 一种少见的跨目录写webshell方法
  10. 利用Web服务器网络打洞
  11. base64和图片的互转(HTML5的File实现)
  12. C++模板实例掌握
  13. HDU 5679 Substring 后缀数组判重
  14. 推荐系统架构-(附ppt&amp;代码)
  15. 【安富莱专题教程第3期】开发板搭建Web服务器,利用花生壳让电脑和手机可以外网远程监控
  16. Concurrent下的线程安全集合
  17. JavaScript和Ajax部分(2)
  18. centos 6 与 centos 7 服务开机启动、关闭设置的方法
  19. linux 下的常用操作命令
  20. 在OneNote中快速插入当前日期和时间

热门文章

  1. 钉钉-E应用开发初体验(企业内部应用)
  2. MongoDB的启动与停止
  3. python中使用to_excel时如何不覆盖原有数据来新建sheet页
  4. 每日一抄 Go语言使用select切换协程
  5. C# 内存回收
  6. [2004年NOIP提高组] 合并果子
  7. 20202411 2020-2021-2 《Python程序设计》实验二报告
  8. C语言||一作业04
  9. count(1) and count(*),count(字段)区别及效率比较
  10. 操作系统|02.Linux基础(1)