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

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>

相关文章:

  • 【C++】20. AVL树的实现
  • BU9792驱动段式LCD
  • 解决:dpkg: error: dpkg frontend lock is locked by another process
  • 光伏电站及时巡检:守护清洁能源的“生命线”
  • linux移植lvgl
  • 带您了解工业级网络变压器的浪涌等级测试有哪些条件?
  • Mistral AI 开源最新 Small 模型——Devstral-Small-2505
  • CATIA高效工作指南——常规配置篇(三)
  • 【Nature子刊聚焦:超构表面多维调控与AI驱动的设计革命 ——2024-2025年超构表面领域突破性进展速览 】
  • Day 29 训练
  • 免费在线AI聊天工具
  • 数据同步自动化——如何用Python打造高效工具?
  • 数学建模MathAI智能体-2025电工杯A题实战
  • Linux性能监控:工具与最佳实践
  • 双重攻击锁定饮料巨头,黑客组织宣称窃取可口可乐海量数据
  • JavaWeb面试题 (一)
  • Java 8 Lambda 表达式使用说明与案例
  • Java 集合框架核心知识点全解析:从入门到高频面试题(含 JDK 源码剖析)
  • synchronized 实现原理
  • 双流芯谷元宇宙产业园,引领元宇宙产业新潮流
  • 哈尔滨seo整站优化/做企业推广的公司
  • 浙江省住房城乡建设厅官方网站/桂林网页
  • 网站上的网站地图怎么做/制作网页的步骤
  • 导购网站怎么建/今日重大新闻
  • 高端品牌网站建设服务/怎么搭建一个网站
  • 舞蹈网站建设报价/株洲网站设计外包首选