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

一 数字转金额格式显示

        //数字转金额格式
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. 深入理解JAVA虚拟机阅读笔记5——Java内存模型与线程

    Java内存模型是定义线程共享的变量的访问规则(实例字段.静态字段和构成数组对象的元素),但不包括线程私有的局部变量和方法参数. 1.主内存与工作内存 Java内存模型规定,所有的变量都必须存储在主内 ...

  2. ASP.NET Core 2 学习笔记

    之前的ASP.NET网站,只要把*.html.*.css.*.jpg.*.png.*.js等静态文件放在项目根目录,默认都可以直接被浏览:但ASP.NET Core 小改了浏览静态文件的方式,默认根目 ...

  3. 【Linux】Linux定时任务Crontab命令详解

    linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另 外, 由于使用者自己也可以设置计划任务,所以, ...

  4. jmete JSR223 PostProcessor使用

    1.使用xpath Extractor提取页面值 2.使用 JSR223 PostProcessor拼接json数据 function genJsons() { var MaterialName = ...

  5. Luogu 1429 平面最近点对 | 平面分治

    Luogu 1429 平面最近点对 题目描述 给定平面上n个点,找出其中的一对点的距离,使得在这n个点的所有点对中,该距离为所有点对中最小的 输入输出格式 输入格式: 第一行:n:2≤n≤200000 ...

  6. CF739E Gosha is hunting 【WQS二分 + 期望】

    题目链接 CF739E 题解 抓住个数的期望即为概率之和 使用\(A\)的期望为\(p[i]\) 使用\(B\)的期望为\(u[i]\) 都使用的期望为\(p[i] + u[i] - u[i]p[i] ...

  7. java多线程 -- 同步鎖

    为了解决多线程安全问题在 Java 5.0 之前,协调共享对象的访问时可以使用的机制只有 synchronized 和 volatile .Java 5.0 后增加了一些新的机制,但并不是一种替代内置 ...

  8. 解题:POI 2010 Beads

    题面 正反各做一遍哈希来判断,然后在两个哈希值里取一个$max/min$做哈希值,然后每次把子串们的哈希插进$set$里,最后统计集合大小,就可以优秀地在$O(nlog^2$ $n)$中出解了 然后我 ...

  9. 洛谷P4382 劈配

    不知道这个Zayid是谁... 题意: 有n个人,m个导师.每个导师能接纳bi个人,每个人对于这m个导师都有一个志愿档次. 优先满足靠前的人,问到最后每个人匹配的导师是他的第几志愿. 每个人又有一个限 ...

  10. Linux下vim 快捷键

    vim按d表示剪切 按dd剪切一行 vim命令:命令模式 /关键字 n继续向下查找vim的多行注释: 1.按ctrl + v进入 visual block模式 2.按上下选中要注释的行 3.按大写字母 ...