vue表格中显示金额格式化与保存时格式化为数字并校验!
最近项目中遇到了成本计算的,需要显示金额,保存一下,以后方便直接拿来用!
一 数字转金额格式显示
//数字转金额格式
format:function(s){
if(/[^0-9\.]/.test(s)) return "invalid value";
s=s.replace(/^(\d*)$/,"$1.");
s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1");
s=s.replace(".",",");
var re=/(\d)(\d{3},)/;
while(re.test(s))
s=s.replace(re,"$1,$2");
s=s.replace(/,(\d\d)$/,".$1");
return s.replace(/^\./,"0.")
},
直接用此方法转换即可,对于项目中表格中的数据,可以直接用过滤器,把每一条数据的数字金额转换成这种格式,效果大概就是下面这中:

这种显示出来的是字符串类型,所以在保存的时候又需要再进行一次转换,并且必要的校验是必不可少的!
我这里在vue中使用的过滤器,直接在表格中使用这个就行了
//金额过滤显示
moneyformat:function(data){
if(!data.cost){
data.cost='';
}
data.cost=data.cost+'';
if(!data.cost==undefined || data.cost=="" || data.cost==null){
data.cost="0.00";
}else{
data.cost=this.format(data.cost);
}
return true;
},
二 金额格式转数字
//金额转数字
moneyToNumFiled:function(money) {
var num=money.trim();
var ss=num.toString();
if(ss.length==0){
return 0.00;
}
num=new Number(ss.replace(/,/g, ""));
money=num;
},
这种比较简单,就是把字符串中的, 替换成空就行了,接着就是校验了!
三 金额校验
金额检验一般是数字且必须保留两位小数且不能为空,直接用正则就可以!
for(let value of me.olddatas){
me.moneyToNumFiled(value.cost);
if(value.cost==undefined || value.cost=="" || value.cost==null){
gyz.tools.alert({ header: '请输入金额!', content: '' });
return false;
}
var reg=/^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/;
if(!reg.test(value.cost)){
alert({ '请输入正确金额,必须是数字型,且小数位最多保留两位!' });
return false;
}
}
注意:
在实际开发中还碰到一个蛋疼的问题就是由于表格是自己封装的一个组件,在实际开发中,当你在当前js中操作这个表格中的值的某个属性时(我说的当然就是金额啦,哈哈哈),页面值是不会变的,
究其原因,当然还是共享状态的问题了,由于不是自己的项目,是公司项目,决定还是不自己修改,直接在程序里多一步处理,直接结构赋值就行,找个中间变量,不要直接操作某个属性,直接整体赋值就可以了,
这样的话,保存,create,还有刷新等等,只要涉及到数值会变的,都需要这样处理:
//转换赋值
let newdata=me.olddatas;
me.olddatas=[];
//操纵本页面的对象,进行数据处理
//我这里就是赋值金额,当然没有变化就直接结构赋值更简单
newdata.forEach(function(value,index){
value.cost='';
for(let value1 of data){
if(value.id==value1.postLevel){
value.cost=value1.cost;
}
}
});
//最后整体赋值回来就好
me.olddatas=newdata;
其实还有一种更简单的,mysql查询的时候直接使用format函数转换即可,数字格式化函数

第二个参数为保留几位小数,四舍五入策略,不过保存的时候还是需要转数字的
vue表格中显示金额格式化与保存时格式化为数字并校验!的更多相关文章
- 在vue项目中显示实时时间(年月日时分秒)
1.在data中定义一个变量,存储时间 data(){ return { nowTime:'' } }, 2.给定一个div <div>{{nowTime}}</div> 3. ...
- VScode 格式化代码保存时使用ESlint修复代码
前言 eslint vs code 新买的电脑啊啊西 装VScode 配置格式化代码保存时使用ESlint修复代码头快炸了,不建议初学者用,太费时间了: 终于搞定---再也不要担心缩进,函数(名)和 ...
- Vue表格中,对数据进行转换、处理
众所周知,后端从Mysql取出的数据,一般是很难单独处理某一个Key的数据的(需要处理的话,可能会浪费大量的性能.而且对页面加载时间有很大的影响),所以,从数据库取出的数据.只能由前端进行处理.但是在 ...
- Vue表格中时间的处理
Vue中表格的数据应该来自后台数据库,然后从数据库中读取到的数据,时间格式可能有些不同,我们可以根据实际需要来对这个时间进行转化. 这里介绍一个js库,它提供了强大的日期处理功能,功能强大且只有2k大 ...
- jqGrid中的formatter,表格中值的格式化
jqGrid中对列表cell数次那个格式话设置主要通过colModel中formatter,formatoptions来设置. 基本用法: jQuery("#jqGrid_id") ...
- iview+vue 表格中添加图片
开门见山,话不多说,要在表格中添加图片,可以使用td: <table " width="100%"> <tr class="tr-style ...
- Winform中对xml文件进行保存时空白节点自动换行问题的解决
场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...
- vue 表格中的下拉框单选、多选处理
最近在用vue做前后端分离,需要在表格中用到下拉框,由于需求变动,从最开始的单选变为多选,折腾了许久,记录一下,供后人铺路 vue 中的表格下拉框单选 collectionsColnumOptions ...
- PyQt5调入数据库数据在表格中显示
数据库为Postgresql import sys from form import Ui_Form from PyQt5.Qt import QWidget, QApplication,QTable ...
随机推荐
- 计算机网络【1】—— OSI七层协议和TCP/IP四层协议
新开一贴,专门用来记录计算机网络相关知识. 一.OSI七层协议 物理层.数据链路层.网络层.传输层.会话层.表示层.应用层 二.TCP/IP四层协议 网络接口层.网际层.运输层.应用层 三.五层协议 ...
- React之智能组件和木偶组件
智能组件 VS 木偶组件 在 React + Redux 结合作为前端框架的时候,提出了一个将组件分为“智能”和“木偶”两种 智能组件:它是数据的所有者,它拥有数据.且拥有操作数据的action,但是 ...
- Redis 基础:Redis 事件处理
Redis 事件处理 Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: 文件事件(file event):Redis服务器通过套接字与客户端(或其他Redis服务器)进行连接,而文件事 ...
- c++11 可变参数模板函数
c++11 可变参数模板函数 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #in ...
- Springboot返回html
注:Springboot的版本2.1.3.RELEASE List-1 application.properties文件 server.port=8080 #url中,项目的前缀 server.ser ...
- 洛谷 P5105 不强制在线的动态快速排序
P5105 不强制在线的动态快速排序 题目背景 曦月最近学会了快速排序,但是她很快地想到了,如果要动态地排序,那要怎么办呢? 题目描述 为了研究这个问题,曦月提出了一个十分简单的问题 曦月希望维护一个 ...
- 洛谷 P4292 [WC2010]重建计划 解题报告
P4292 [WC2010]重建计划 题目描述 \(X\)国遭受了地震的重创, 导致全国的交通近乎瘫痪,重建家园的计划迫在眉睫.\(X\)国由\(N\)个城市组成, 重建小组提出,仅需建立\(N-1\ ...
- sqlmap利用DNS进行oob(out of band)注入(转)
0x00 起因 实际案子的时候遇到了一个注入,过狗可以使用sqlmap,但是是基于时间的注入和限制频率需要使用--delay参数,本来就是延时再加上--delay等的心力憔悴.所有有了下面介绍使用 ...
- ES6学习(一)搭建环境
作为一名后端小开发,业务工作需要将后台系统重构一番,许多同事都已经使用前后分离搭建项目,为了不拖后腿自己在家摸索ES6的新特性,真心不知道什么ES3,ES5,一上来就开始搞ES6,在此留下学习笔记,方 ...
- 利用ansible来做tomcat应用的持续交付
https://www.jianshu.com/p/fca8f91ae223 在做持续交付这件事,想必大家都是用jenkins这款程序来做基石.当然,我们这次也是用jenkins作为承载工具,jenk ...