最近项目中遇到了成本计算的,需要显示金额,保存一下,以后方便直接拿来用!

一 数字转金额格式显示

        //数字转金额格式
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表格中显示金额格式化与保存时格式化为数字并校验!的更多相关文章

  1. 在vue项目中显示实时时间(年月日时分秒)

    1.在data中定义一个变量,存储时间 data(){ return { nowTime:'' } }, 2.给定一个div <div>{{nowTime}}</div> 3. ...

  2. VScode 格式化代码保存时使用ESlint修复代码

    前言 eslint  vs code 新买的电脑啊啊西 装VScode 配置格式化代码保存时使用ESlint修复代码头快炸了,不建议初学者用,太费时间了: 终于搞定---再也不要担心缩进,函数(名)和 ...

  3. Vue表格中,对数据进行转换、处理

    众所周知,后端从Mysql取出的数据,一般是很难单独处理某一个Key的数据的(需要处理的话,可能会浪费大量的性能.而且对页面加载时间有很大的影响),所以,从数据库取出的数据.只能由前端进行处理.但是在 ...

  4. Vue表格中时间的处理

    Vue中表格的数据应该来自后台数据库,然后从数据库中读取到的数据,时间格式可能有些不同,我们可以根据实际需要来对这个时间进行转化. 这里介绍一个js库,它提供了强大的日期处理功能,功能强大且只有2k大 ...

  5. jqGrid中的formatter,表格中值的格式化

    jqGrid中对列表cell数次那个格式话设置主要通过colModel中formatter,formatoptions来设置. 基本用法: jQuery("#jqGrid_id") ...

  6. iview+vue 表格中添加图片

    开门见山,话不多说,要在表格中添加图片,可以使用td: <table " width="100%"> <tr class="tr-style ...

  7. Winform中对xml文件进行保存时空白节点自动换行问题的解决

    场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...

  8. vue 表格中的下拉框单选、多选处理

    最近在用vue做前后端分离,需要在表格中用到下拉框,由于需求变动,从最开始的单选变为多选,折腾了许久,记录一下,供后人铺路 vue 中的表格下拉框单选 collectionsColnumOptions ...

  9. PyQt5调入数据库数据在表格中显示

    数据库为Postgresql import sys from form import Ui_Form from PyQt5.Qt import QWidget, QApplication,QTable ...

随机推荐

  1. 当给属性添加final 时候 则无法进行第二次值的修改

  2. 修改pip源到国内的镜像源

    国内网络原因,经常无法访问一些技术网站,pypi.python.org就是其中一个.所以,使用pip给Python安装软件时,经常出现错误.like this: File "/usr/lib ...

  3. springmvc+mybatis 处理图片(一):上传图片

    一直觉得上传图片文件之类的很难,所以最后才处理图片,发现也并没有那么难,开始正文. 思路:将前台上传的file存到MutipartFile类型字段中,再将MulipartFile转换为pojo类中的b ...

  4. Eclipse中设置新创建文件的默认编码格式

    window-prefenences-web-jsp(或者是其他文件格式,里面是一个列表) 找到之后点击,在右侧区域中选择encoding进行修改即可,然后应用,OK

  5. 【大数据】MapTask并行度和切片机制

    一. MapTask并行度决定机制 maptask的并行度决定map阶段的任务处理并发度,进而影响到整个job的处理速度 那么,mapTask并行实例是否越多越好呢?其并行度又是如何决定呢? 1.1 ...

  6. DAY2-Python学习笔记

    1.迭代器:可以直接作用于for循环的对象统称为可迭代对象:Iterable,使用isinstance()判断一个对象是否是Iterable对象: >>> from collecti ...

  7. ORA-01410: 无效的 ROWID

    视图查询单表是有这个东西的,但是视图的SQL涉及多表关联,就没这个rowid了,要么自己写个,要么不用这个ROWID做啥动作

  8. php版本的code review软件

    phabricator, http://www.oschina.net/p/phabricator

  9. HDU 2087 剪花布条(字符串匹配,KMP)

    HDU 2087 剪花布条(字符串匹配,KMP) Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出 ...

  10. MVC中数据验证

    http://www.studyofnet.com/news/339.html http://www.cnblogs.com/kissdodog/archive/2013/05/04/3060278. ...