<el-input>只能输入数字,保留两位小数
实现思路
单独做一个组件来实现额外的功能
只能输入数字: 监听input事件,在监听函数中通过正则处理掉非字符
保留两位小数: 监听blur事件,在失去焦点时格式化为2位小数,对于从prop中进来的value属性每次都进行格式化
完整代码
<template> <el-input v-model="inputValue" @blur="onBlur" @input="onInput"/> </template> <script> const debounce=(func,awit,immediately)=>{//防抖函数 var timer; return function(){ var self=this; if(immediately && !timer){ func.call(self) } if(timer) clearTimeout(timer); timer=setTimeout(function(){ func.call(self) },awit) } } const toDecimal2=(x)=>{//格式化函数 if(x.split('.').length>2){ x=x.split('.').slice(0,2).join('.'); } var f = parseFloat(x); if (isNaN(f)) { return '0.00'; } f = Math.round(x*100)/100; var s = f.toString(); var rs = s.indexOf('.'); if (rs < 0) { rs = s.length; s += '.'; } while (s.length <= rs + 2) { s += '0'; } return s; } export default { props:{ value:{ } }, data(){ return { inputValue:this.value, emitEvent:debounce(()=>{ this.$emit('input',this.inputValue) },1000) } }, watch:{ value(){ this.inputValue=toDecimal2(this.value) } }, methods:{ onBlur(){ this.inputValue=toDecimal2(this.inputValue); }, onInput(value){ this.inputValue = value.replace(/[^\d.]/g,''); this.emitEvent() } } } </script>
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· C# 中比较实用的关键字,基础高频面试题!
· .NET 10 Preview 2 增强了 Blazor 和.NET MAUI
· 为什么AI教师难以实现
· 如何让低于1B参数的小型语言模型实现 100% 的准确率
· AI Agent爆火后,MCP协议为什么如此重要!