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

input输入框过滤非金额内容保留一个小数点和2位小数

这篇是输入框过滤非金额内容保留一个小数点和2位小数,金额的其他格式化可以看这篇文章常用的金额数字的格式化方法

js方法直接使用

该方式可以直接使用过滤内容,也可以到onInput或onblur等地方过滤,自行使用

/*** 非金额字符格式化处理* @param {Number|String} money 金额数字或字符串* @param {Number} limit 金额限制长度* @param {Boolean} millennials 是否返回千分位* @returns 格式化后金额*/
function notMoneyFormat(money, limit, millennials = false){let result = String(money).replace(/[^0-9.]/g, '')//清除“数字”和“.”以外的字符result = result.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的          result = result.replace(".","$#$").replace(/\./g,"").replace("$#$","."); result = result.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数if(result.indexOf(".")< 0 && result !=""){//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额 result= parseFloat(result); } // 数字长度怎么截取这里调整,目前是根据总长度限制,也可以改为小数点前位数格式化if(limit && String(result).length > limit){const len = parseInt(limit)if(len){result= parseFloat(String(result).substring(0, limit));}}if(millennials){return Number(result).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",")}return result
}

vue自定义指令方式使用

自定义使用过滤没有加千分位的方式输出,需要的可以自行添加

import Vue from 'vue'
// 非金额字符过滤
Vue.directive('not-money-format', {// binding 为数字总长度bind(el, binding){el.addEventListener('input', (e)=> {// 值不存在,则赋值为默认值if(e.target.value){let result = e.target.value.replace(/[^0-9.]/g, '')//清除“数字”和“.”以外的字符result = result.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的          result = result.replace(".","$#$").replace(/\./g,"").replace("$#$","."); result = result.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数if(result.indexOf(".")< 0 && result !=""){//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额 result= parseFloat(result); } // 数字长度怎么截取这里调整if(binding.value && String(result).length > binding.value){const len = Number(binding.value)if(len){result= parseFloat(String(result).substring(0, binding.value));}}e.target.value = result;e.target.dispatchEvent(new Event('input')); // 更新v-model绑定的值}})}
})

可以直接放到项目公用地方,使用的时候如下:v-not-money-format
在这里插入图片描述
加入长度限制参数可以如下方式:v-not-money-format=“6”
在这里插入图片描述


以上就是过滤非金额内容保留一个小数点和2位小数的方式,展示金额的方式可以参考常用的金额数字的格式化方法 里边有千分位和金额中文大写展示的处理方式

http://www.lryc.cn/news/308161.html

相关文章:

  • 推荐系统经典模型YouTubeDNN代码
  • 学习加密(三)spring boot 使用RSA非对称加密,前后端传递参数加解密
  • 面向对象编程入门:掌握C++类的基础(2/3):深入理解C++中的类成员函数
  • javaWeb学习04
  • Day07:基础入门-抓包技术全局协议封包监听网卡模式APP小程序PC应用
  • 通过elementUI学习vue
  • 音视频数字化(数字与模拟-电视)
  • CSS复合选择器(二)
  • Postgresql中VACUUM操作原理和应用
  • 5.1 Ajax数据爬取之初介绍
  • react-组件进阶
  • 企业有了ERP,为什么还要上BI?
  • P1331 海战
  • Orange3数据预处理(索引选择器组件)
  • Python实现时间序列分析进行平稳性检验(ADF和KPSS)和差分去趋势(adfuller和kpss算法)项目实战
  • 代码随想录 Leetcode494. 目标和
  • 【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-NR编解码LDPC和Polar概述(一)
  • 代码库管理工具Git介绍
  • 【长期更新】游戏开发中可能会用到的数学小工具
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的活体人脸检测系统(Python+PySide6界面+训练代码)
  • 亚信安慧AntDB助力全链路实时化
  • C#进阶——反射、特性
  • UE5 C++ 发射子弹发射(Projectile)
  • 【蓝牙协议栈】【蓝牙分析工具】Ellisys 分析HCI Log和btsnoop Log
  • 亚信安慧AntDB数据库与流式处理的有机融合
  • 神经网络系列---权重初始化方法
  • 【重要公告】BSV区块链协会宣布将启动多项动态安全增强措施
  • 软件设计模式之访问者模式(Visitor Pattern)
  • 【MySQL】主从同步原理、分库分表
  • uniapp如何实现关闭前面指定数目页面