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

vue2 全局指令(输入框自定义限制)

1.Vue.directive

  • Vue.directive('precision', {...}): 这是注册一个全局自定义指令的方式,名称为 'precision'。通过这个指令,你可以在模板中的元素上使用 v-precision 来应用该指令。

Vue.directive('precision', { bind(el, binding, vnode) {...} }) 这行代码定义了一个名为 precision 的自定义指令,并在其中使用了钩子函数 bind。在 Vue.js 中,自定义指令是用来直接操作 DOM 的一种方式。

实例

Vue.directive('precision', {bind(el, binding, vnode) {const input = el.querySelector('input');if (input) {input.addEventListener('input', () => {let value = input.value;// 过滤非数字和小数点value = value.replace(/[^0-9.]/g, '');// 处理开头的小数点,替换为0.value = value.replace(/^\./, '0.');// 分割整数和小数部分let parts = value.split('.');// 处理多个小数点的情况,合并小数部分if (parts.length > 2) {value = parts[0] + '.' + parts.slice(1).join('');parts = value.split('.'); // 重新分割确保结构正确}// 截取小数部分至多三位if (parts.length > 1) {parts[1] = parts[1].slice(0, 3);value = parts[0] + '.' + parts[1];}// 避免无效的更新导致光标跳动if (input.value !== value) {input.value = value;}// 触发v-model更新vnode.componentInstance.$emit('input', value);});}}
});使用示例:
<template><div v-precision><input v-model="number" type="text"></div>
</template>

http://www.xdnf.cn/news/8581.html

相关文章:

  • [crxjs]自己创建一个浏览器插件
  • 嵌入式学习Day27
  • [特殊字符] 构建高内聚低耦合的接口架构:从数据校验到后置通知的分层实践
  • 2025年高防IP与游戏盾深度对比:如何选择最佳防护方案?
  • C语言中地址的加法和减法
  • iOS 上线前的性能与稳定性检查流程实录:开发者的“最后一公里”(含 KeyMob 应用经验)
  • 速卖通OpenAPI商品详情接口开发实战
  • 生产企业ERP系统,项目级ERP系统源码,实现业务流程的全面管理
  • 用DeepSeek提升前端开发效率
  • MCP 服务与 Agent 协同架构的实践解码:双轮驱动下的场景化价值创造
  • 【ICL】上下文学习
  • 数据合法性校验
  • 典型城市工况数据(Drive Cycle)用于车辆仿真
  • 与 JetBrains 官方沟通记录(PyCharm 相关问题反馈)
  • 怎么判断一个Android APP使用了Capacitor这个跨端框架
  • 智慧化工园区安全风险管控平台建设方案(Word)
  • PH热榜 | 2025-05-23
  • selinux基础知识
  • Linux虚拟机联网失败原因之一
  • 什么是软件压力测试,出压力测评报告的第三方软件检测公司推荐
  • 20250523-在Unity中创建角色动画(2D)(Set up Animator with State Machine)
  • LCS4110R加密芯片在打印机墨盒的应用
  • el-form表单规则验证
  • C# DataGrid扩展 - DataGrid不同模板切换
  • 电商美图设计工具,图生生-低成本打造高转化商品场景图
  • 【新品来袭】功耗降低56%爱普生研发新款晶体振荡器
  • 信息系统项目管理师考前练习9
  • InnoDB引擎底层解析(二)之InnoDB的Buffer Pool(二)
  • 嵌入式STM32学习——ESP8266 01S的基础介绍
  • ConvSearch-R1: 让LLM适应检索器的偏好或缺陷