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 ...
随机推荐
- c++11 闭包的实现
c++11 闭包的实现 什么是闭包 闭包有很多种定义,一种说法是,闭包是带有上下文的函数.说白了,就是有状态的函数.更直接一些,不就是个类吗?换了个名字而已. 一个函数,带上了一个状态,就变成了闭包了 ...
- BZOJ4870 [Shoi2017]组合数问题 【组合数 + 矩乘】
题目链接 BZOJ4870 题解 \[ans = \sum\limits_{i = 0}^{\infty}{nk \choose ik + r} \pmod p\] 发现实际是求 \[ans = \s ...
- 洛谷P1592 互质
题目描述 输入两个正整数n和k,求与n互质的第k个正整数. 输入输出格式 输入格式: 仅一行,为两个正整数n(≤10^6)和k(≤10^8). 输出格式: 一个正整数,表示与n互质的第k个正整数. 由 ...
- 【bzoj1833】 ZJOI2010—count 数字计数
http://www.lydsy.com/JudgeOnline/problem.php?id=1833 (题目链接) 题意 求在${[a,b]}$范围内整数中,每个数码出现的次数. Solution ...
- Java之IO流(字节流,字符流)
IO流和Properties IO流 IO流是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键, 因而所有 I/O 的主体实际上是内置在操作系统中的.单独的 ...
- IEEE 754浮点数表示标准
二进制数的科学计数法 C++中使用的浮点数包括采用的是IEEE标准下的浮点数表示方法.我们知道在数学中可以将任何十进制的数写成以10为底的科学计数法的形式,如下 其中显而易见,因为如果a比10大或者比 ...
- laravel 实用扩展包
1.beyondcode / laravel-self-diagnosis 环境检测.检测 php 版本.扩展 是否正常,数据库连接是否正常等 2.nunomaduro/larastan larave ...
- ubuntu thrift
1.下载 http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.2/thrift-0.9.2.tar.gz 2.解压 tar -xvf thrif ...
- python的函数介绍 位置参数 关键字参数 默认参数 参数组 *args **kwargs
1.数学意义的函数与python中的函数 数学意义的函数 y = 2*3+1 x =3 y =7 x是自变量,y是因变量 2.python中定义函数的方法 一个函数往往都是为了完成一个特定的功能而存在 ...
- Git2:Git基本操作
目录 一.git全局配置 二.创建一个版本库 三.git的常用操作 1.版本提交与回退 1.1.版本提交 1.2.版本回退 2.工作区.版本库与暂存区 2.1.工作区 2.2.版本库 3.管理文件的修 ...