vue项目 - 自定义数字输入指令 | 限制自定义小数位输入
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
vue项目 - 自定义数字输入指令 | 限制自定义小数位输入的更多相关文章
- vue 项目项目启动时由于EsLint代码校验报错
今天在编写好vue项目代码时,在命令行输入npm start的时候出现了如下图所示的一大堆错误: 在网上查找资料说是缺少EsLint配置文件的问题,最终找到一篇由 hahazexia 编写的一篇博客文 ...
- docker 运行jenkins及vue项目与springboot项目(三.jenkins的使用及自动打包vue项目)
docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...
- vue项目引入自定义.css的样式文件
ES6的引入方式: .vue文件中 css文件引入 <template></template> <style scoped> @import "../as ...
- vue项目富文本编辑器vue-quill-editor之自定义图片上传
使用富文本编辑器的第一步肯定是先安装依赖 npm i vue-quill-editor 1.如果按照官网富文本编辑器中的图片上传是将图片转为base64格式的,如果需要上传图片到自己的服务器,需要修改 ...
- vue初级学习--组件的使用(自定义组件)
一.导语 突然冒出四个字,分即是合,嗯,优点道理....................... 二.正文 在搞的仿淘宝demo,之前加入购物车是与商品详情一块的,今天把它单独拆出来,复用性高点,那这样 ...
- Excel 2007中自定义数字格式前要了解的准则
要在Excel 2007中创建自定义数字格式,首先应了解自定义数字格式的准则,并从选择某一内置数字格式开始.然后,可以更改该格式的任意代码部分,从而创建自己的自定义数字格式. 数字格式最多可包含四个代 ...
- Spring MVC 项目搭建 -6- spring security 使用自定义Filter实现验证扩展资源验证,使用数据库进行配置
Spring MVC 项目搭建 -6- spring security使用自定义Filter实现验证扩展url验证,使用数据库进行配置 实现的主要流程 1.创建一个Filter 继承 Abstract ...
- Spring MVC 项目搭建 -4- spring security-添加自定义登录页面
Spring MVC 项目搭建 -4- spring security-添加自定义登录页面 修改配置文件 <!--spring-sample-security.xml--> <!-- ...
- Springboot 项目启动后执行某些自定义代码
Springboot 项目启动后执行某些自定义代码 Springboot给我们提供了两种"开机启动"某些方法的方式:ApplicationRunner和CommandLineRun ...
- vue从入门到进阶:自定义指令directive,插件的封装以及混合mixins(七)
一.自定义指令directive 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的 ...
随机推荐
- Docker-Compose实战<下篇>
本文是在上一篇文章的基础上做的一些内容追加,上文最后截止内容是docker-compose build将镜像生成完成.接下来我将继续写启动相关服务,访问服务以及常用命令使用等. 1 启动镜像 使用命令 ...
- spring jdbcTemplate 配置
1 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 2 d ...
- 循环2-if与case语法
一.if语法结构 1. 单分支结构 if < 条件表达式 > then 指令 fi 或者 if < 条件表达式 >:then 指令 fi 2. 双分支结构 if < 条件 ...
- holiday12
holiday12--linux basis super user(root) In linux, account root usually use for system maintain and m ...
- python菜鸟学习: 10. 函数的基本用法
# -*- coding: utf-8 -*-# 回参函数def test01(): return 0# 以元组返回参数def test02(): return 1, [1, 2, 3, 4, 5], ...
- <三>JMeter逻辑控制器简介
一.添加HTTP请求线程 1.运行jmeter.bat进入jmeter界面 2.修改语言为简体中文 3.右键测试计划添加一个线程组 4.右键线程组添加一个HTTP请求 5.填写HTTP请求服务名称和路 ...
- bzoj 4195
并查集水题 离散化之后直接并查集合并,在不等时判断两者是否在同一个集合內即可 注意排序 贴代码: #include <cstdio> #include <cmath> #inc ...
- 用python判断三角形的形状
# coding:utf-8 class point: def __init__(self,x,y,name): self.x = x self.y = y self.name = name '''两 ...
- c++学习 5 预处理
一 内存分区 内存的分区变量存储,一般可以分为以下五个区,它们分别是: 可读可写 堆区:使用malloc.calloc.realloc.free以及c++里面的new和delete去动态申请. ...
- Debug --> python list.sort()食用方法
list.sort(key=lambda x:x[1] , reverse=True) 参数 key 指明按照什么进行排序.lambda是匿名函数,参数的第一个x表示列表的第一个元素,如表示列表中的元 ...