vue3 input 控制小数位 自定义指令
创建 文件 global index.ts
main.ts文件引入
import global from "@/global";
app.use(global)
index.ts 内容
import { App } from "vue";
export default (app: App) => {
// 输入框限制几位正小数
app.directive("float", {
mounted(el, binding) {
let { value } = binding;
//digit:1=一位小数,2=两位小数,10=0位小数能输入o 正数,11=0位小数不能输入o 正数
let digit = value!=null||value!=undefined?value: 2;
let input = el.querySelector("input");
input.setAttribute("type", "text");
input.addEventListener("input", (val) => {
let { target: { value } } = val;
if (digit == 10){
val.target.value=value.replace(/^0+(\d)|[^\d]+/g,'');
}else if (digit == 11) {
val.target.value=value.replace(/^(0+)|[^\d]+/g,'');
} else if (digit == 1) {
val.target.value = value.replace(/^0[0-9]+/, val => val[1])
.replace(/^(\.)+/, "")
.replace(/[^\d.]/g, "")
.replace(/\.+/, ".")
.replace(/^(\-)*(\d+)\.(\d).*$/, "$1$2.$3");
} else {
val.target.value = value.replace(/^0[0-9]+/, val => val[1])
.replace(/^(\.)+/, "")
.replace(/[^\d.]/g, "")
.replace(/\.+/, ".")
.replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3");
}
});
},
unmounted(el) {
let input = el.querySelector("input");
input.addEventListener("input", () => {
});
}
});
}
使用方式
<el-input v-float="10" :maxlength="3" type="number" v-model.number="value" ></el-input>
<el-input v-float="11" :maxlength="3" type="number"
v-model.number="value" ></el-input>
<el-input v-float="2" type="number" v-model.trim="value"></el-input>
分类:
vue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理