当前位置: 首页 > news >正文

保留5位小数封装一个自定义指令

名为 decimalDirec 的 Vue 自定义指令,用于限制输入框中数字的小数位数

这个指令的主要功能是:

1.限制输入框中的数字最多只能有指定的小数位数(默认 5 位)

2.自动过滤非数字字符和非法的小数点

3.确保输入的数字格式正确(如自动补全前导零)

4.与 Vue 的数据绑定系统(v-model)正确集成

一、在utils文件夹下新建directives文件夹,新建decimalDirec.js

export const decimalDirec = {bind(el, binding) {// 指令第一次绑定到元素时调用,初始化设置const input = el.querySelector('input'); // 获取输入框元素const decimalPlaces = binding.value || 5; // 获取指令参数,默认5位小数input.addEventListener('input', function(e) {// 监听输入事件,每次输入变化时执行过滤逻辑let value = e.target.value;// 1. 过滤非数字和小数点字符value = value.replace(/[^\d.]/g, '');// 2. 处理小数点后的位数const dotIndex = value.indexOf('.');if (dotIndex !== -1) {// 保留第一个小数点之前的部分和之后的数字const integerPart = value.substring(0, dotIndex);const decimalPart = value.substring(dotIndex + 1).replace(/\./g, ''); // 移除所有后续小数点// 3. 限制小数位数为5位const truncatedDecimal = decimalPart.substring(0, 5);// 合并整数部分和小数部分value = `${integerPart}.${truncatedDecimal}`;}// 4. 处理前导小数点(如输入 .5 自动转换为 0.5)if (value.startsWith('.')) value = '0' + value;// 5. 更新输入框的值e.target.value = value;// 6. 手动触发 input 事件,通知 Vue 数据更新const event = new Event('input', { bubbles: true });e.target.dispatchEvent(event);});}
};

二、如何注册和使用自定义指令?

 在main.js中引入import { decimalDirec } from '@/utils/directives/decimalDirec';// 注册全局保留小数点指令
Vue.directive('decimal', decimalDirec);<vxe-inputv-model="row.outOfMeters":disabled="showAble"placeholder="出库米数"type="number"v-decimal="5" />

http://www.dtcms.com/a/295948.html

相关文章:

  • Linux 内核基础统简全解:Kbuild、内存分配和地址映射
  • 10分钟搭建脚手架:Spring Boot 3.2 + Vue3 前后端分离模板
  • Springboot儿童医院问诊导诊系统aqy75(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 使用钉钉开源api发送钉钉工作消息
  • C语言 一文详解常用的字符串操作函数及模拟实现
  • 医疗系统国产化实录:SQL Server国产替代,乙方保命指南
  • DigitalOcean 一键模型部署,新增支持百度开源大模型ERNIE 4.5 21B
  • 集合中Comparable接口和Equals方法的冲突
  • 【Mermaid 离线工具】Mermaid 流程图生成器 - 高清PNG输出,一键生成专业级流程图!
  • 共创养生新时代——2025酵素益生产品展暨中秋滋补选品节即将开启
  • QT6 源(165)模型视图架构里的所有的信号函数概览
  • UNETR++: Delving Into Efficient and Accurate 3D Medical Image Segmentation
  • 深度分析Java内存模型
  • 【全新上线】境内 Docker 镜像状态监控
  • 算法第三十八天:动态规划part06(第九章)
  • 【shell脚本编程】day1 备份指定文件类型
  • Unreal5从入门到精通之 动画蓝图 快速入门
  • ML1-ETO 阳性白血病的复发与 LSC 的持续存在密切相关
  • 2025智能BI⼯具竞品深度解析:DataFocus如何挑Tableau与PowerBI的霸主地位?
  • OpenCV图像插值、边缘填充、图像掩膜、噪声消除实战指南
  • 华为仓颉编程语言的表达式的特点
  • 网安学习NO.18
  • 深入掌握CSS Grid布局:每个属性详解与实战示例
  • MySQL 8.4.4详细下载安装配置
  • 【论文阅读】REVISITING DEEP AUDIO-TEXT RETRIEVAL THROUGH THE LENS OF TRANSPORTATION
  • 全面解析 CSS Flex 布局:从入门到精通的所有属性详解
  • DeepSeek-R1+豆包迭代一次完成中国象棋游戏
  • Qwen3-Coder实现中国象棋游戏的尝试
  • Java网络编程入门:从基础原理到实践(二)
  • 计算机网络简答题(大雪圣期末参考资料)