应客户的需求,希望将系统的所有金额格式化显示:整数位每隔三位加逗号,并保留两位小数。在input框输入时,焦点离开后,同样将输入的金额格式化,但保存到数据库时,保存数字而非字符串。
一.HTML格式化显示金额
将从数据库中取出的金额数字(单位为分)格式化显示出来:
<c:if test="${not empty item.getNum()}"><fmt:formatNumber value="${item.getNum()/100}" type="currency" /> </c:if>
- 1
显示的效果为:
或者设置格式化的方式:
<c:if test="${not empty item.getNum()}"><fmt:formatNumber value="${item.getNum()/100}" pattern="#,##0.0#" /> </c:if>
- 1
显示的效果为:
二.格式化input输入金额
附带几个参考方式:
JS提供的4中数字千位符格式化方法
关于WEB开发金额每三位逗号格式化
三位加逗号处理,保留两位小数
金额格式化及格式换还原
这里使用了第二条链接的方法。程序段如下:
//IE8以后才支持trim方法。这里防止方法不兼容
String.prototype.trim = function () {
return this .replace(/^\s\s*/, '' ).replace(/\s\s*$/, '' );
}
// 格式化数字成0,000.00
function formatNumber(value) {
var result = "";
//将证书部分和小数部分分开
var valueParts = value.split(".");
var mostSignificationDigit = valueParts[0].length -1; // 最高有效数字位,默认为个位
var intervalOfDigit = 0; // 逗号之间的位数(从零累计)
var digit, countOfSignificationDigit;
//按位取出整数部分的值
//如果不加下面这句话,低版本浏览器可能无法处理整数部分
var roundNum = valueParts[0].split("");
for (var i = valueParts[0].length -1; i >= 0; i--) {
digit = roundNum[i];
result = digit + result;
if (digit != "0") {
mostSignificationDigit = i;
}
//每三位添加逗号
if (3 == ++intervalOfDigit) {
result = "," + result;
intervalOfDigit = 0;
}
//alert(digit);
//alert(result);
}
if (mostSignificationDigit == -1) {
result = "0";
}
else {
countOfSignificationDigit = valueParts[0].length - mostSignificationDigit;
if (countOfSignificationDigit > 3) {
result = result.substring(result.length - (countOfSignificationDigit%3 == 0 ? countOfSignificationDigit/3 - 1 : countOfSignificationDigit/3) - countOfSignificationDigit);
}
else {
result = result.substring(result.length - countOfSignificationDigit);
}
}
if (valueParts.length == 2) {
result += ".";
var temp = 2 - valueParts[1].length; // 是否需要补0
for (var i = 0; i < temp; i++) {
valueParts[1] += "0"
}
result += valueParts[1].substring(0, 2);
}
else {
result += ".00";
}
return result;
}
// 鼠标再次聚焦文本域,就清除货币格式,显示无格式的数字
function clearAllFormat(obj){
if(obj!=null&&$(obj).val()!=null&&$(obj).val().trim().length>0){
var waitToDeleteCommaNumber = $(obj).val();
var newInputValue = waitToDeleteCommaNumber.replace(/,/g,"");
$(obj).val(newInputValue.toString());
return newInputValue.toString();
}
}
// 验证是否为浮点数
function checkNumberIsLegal22(obj){
if(!/^[0-9]+(\.[0-9]+){0,1}$/.test(obj)){
return false;
}
return true;
}
// 格式化金额类数字,每三位用逗号分隔,显示的是用逗号分隔的格式化形式
function formatMoneyByComma(obj){
if(obj!=null&&$(obj).val().trim().length>0&&checkNumberIsLegal22($(obj).val())){
// 格式化之前,先清除格式
clearAllFormat(obj);
if($(obj).val()){
var currentNumber = $(obj).val();
$(obj).val(formatNumber(currentNumber));
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
初次在使用上述方法进行字符串格式化时,上测试环境之后报错。经IE浏览器F12调试后,发现问题出在ie低版本(低于8)不支持trim()方法。
解决方案参考:
ie 7/8不支持trim的属性的解决方案
相关推荐
JS格式化数字金额只留两位小数。写了个格式化函数。可以控制小数位数,自动四舍五入,感兴趣的朋友可以了解下
话不多说,先放效果图再贴代码(为了展现思路,我面向过程写的,另外这个是针对保留两位小数的数字进行过滤,因为保留整数的太简单了)。 <!DOCTYPE html> <html> <head> <meta charset=UTF-8&...
代码如下:SELECT FORMAT(12562.6655,2); 结果:12,562.67 查看文档:Formats the number X to a format ...整数部分超过三位的时候以逗号分割,并且返回的结果是string类型的。 代码如下:mysql> SELECT FORMAT(1233
根据用户需求,在输入金额时要格式化,即每三位数字加逗号分隔,并保留两位小数。 考虑到用户的体验,随使用JS对金额进行格式化,前台代码如下: 代码如下: ”txtAmount” runat=”server” xss=removed xss=...
个位数起每隔三位数字添加一个逗号,同时保留两位小数,也称为“千分位格式”。 我们一开始采取了一种比较笨拙的处理方式如下: 首先根据小数点 . 将传入的字符串分割为两部分,整数部分和小数部分(如果没有小数点...
本例第七行中以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15只有两位故补三个空格。 第八行中以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无...
2,数字格式化插值:#{expr}或#{expr;format} 2.1 通用插值 对于通用插值,又可以分为以下4种情况: 1,插值结果为字符串值:直接输出表达式结果 2,插值结果为数字值:根据默认格式(由#setting指令设置)将表达式结果转换...
(5)用Word中提供的公式计算各考生的平均成绩并插入相应单元格内(保留两位小数) 。 (6)设置表格外边框为红色实线1.5磅,表格底纹为蓝色。 (7)在第一自然段第一行中间文字处插入任意一副剪贴画图片,调整大小...
可以看到例子中使用的两个同名变量并没有冲突,因为它们位于不同的名字空间 l 可以使用assign指令在导入的名字空间中创建或替代变量,下面是一个例子: ${my.mail} ${my.mail} l 输出结果: jsmith@...
现在我们加上用来增加可读性的逗号(每隔三位), 我们可以这样表示: ^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]{1,2})?$ 不要忘记加号 '+' 可以被乘号 '*' 替代如果你想允许空白字符串被输入话 (为什么?). 也不要忘记反...
rs.pagesize=N 设置每页为N条记录 rs.pagecount 根据 pagesize 的设置返回总页数 rs.recordcount 返回记录总数 rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否 rs.eof 返回记录指针是否超出数据表...
并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取...
支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。 使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...
D []--实例化一个空数组对象 实例化空数组:var arr=[]; 特点:元素个数不限定,元素类型不限制 13.Array 对象的常用方法: |--1.join()方法--用于把数组中的所有元素放入一个字符串 | eparato表示要使用的...
1.1.5 浮点小数的二进制表示.................................................................................8 1.2 程序员眼中的计算机........................................................................