保留小数点两位和千分位分隔符的使用

页面显示如下:


-------------------------------------------------

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <p style="color:blue">1.输入的数字会自动添加千分位分隔符,移出文本框之后会保留两位小数--利用以下两个JS来实现</p>
  请输入:<input type="text" id="count"/>
  <hr><hr>
  
  <p style="color:red">
  	2.在JSP页面显示后台获取的double数据,要求保留两位小数,且添加千分位分隔符--使用fmt:formatNumber标签<br>
  	假设从后台获取的值为100 100.5 10000000.65 <br>
  	fmt标签的属性:<br>(1)groupingUsed  是否对数字分组 (TRUE 或 FALSE)<br>  (2)minFractionDigits	小数点后最小的位数
  </p>
  <p><fmt:formatNumber groupingUsed="true" minFractionDigits="2">100</fmt:formatNumber></p>
  <p><fmt:formatNumber groupingUsed="true" minFractionDigits="2">100.5</fmt:formatNumber></p>
  <p><fmt:formatNumber groupingUsed="true" minFractionDigits="2">10000000.65</fmt:formatNumber></p>
  <hr><hr>
  <p style="color:#228B22">3.获取后台数据后,也可以通过JS写入页面<br>
  	其中a=32000000.5是一个string类型    b=32000000.5是一个number类型
  </p>
  <button type="button" οnclick="getMsg()">获取数据</button><br>
  获取到的数据a:<input type="text" id="msg1"/>
  获取到的数据b:<input type="text" id="msg2"/>
   
  
</body>

<%
  String basePath = request.getContextPath();
%>
<script type="text/javascript" src="<%=basePath%>/js/jquery-1.9.1.min.js"></script>

<script type="text/javascript">
var a = "32000000.5";//string类型
var b = 32000000.5;//number类型
//将a和b写入文本框
function getMsg(){
	$("#msg1").val(toDoubleThousands(a));
	$("#msg2").val(toDoubleThousands(b));
}

//保留两位小数以及千分位的分隔符
function toDoubleThousands(num) {//可以传入number或者string
	//判断是否有小数点
	var s = num.toString().indexOf(".");
	if(s == -1){//是整数
		return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')+".00";
	}else{//是小数
		var arr = num.toString().split(".");
		if(arr.length > 1 && arr[1].length < 2){//一位小数
			return (arr[0] || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') + "." + arr[1] + "0";
		}else{//两位小数
			return (arr[0] || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') + "." + arr[1];
		}
	}
}

//千分位的分隔符
function toThousands(num) {//此时传入的是字符串,若传入double类型则会indexOf报错
	//若没有任何数据则直接返回
	if(num == "" || num == null){
		return num;
	}else{
		//判断是否有小数点
		var s = num.indexOf(".");
		if(s == -1){//是整数
			return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
		}else{
			 var arr = num.split(".");
			 return (arr[0] || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') + "." + arr[1];
		}
	}
}
//小数点的校验
$(function(){
	//当按下按键时触发keyup事件
	$("#count").on('keyup', function (event) {
	    var $amountInput = $(this);
	    //响应鼠标事件,允许左右方向键移动 
	    event = window.event || event;
	    if (event.keyCode == 37 | event.keyCode == 39) {
	        return;
	    }
	    //先把非数字的都替换掉,除了数字和. 
	    var temp = $amountInput.val().replace(/[^\d.]/g, "").
	        //只允许一个小数点              
	        replace(/^\./g, "").replace(/\.{2,}/g, ".").
	        //只能输入小数点后两位
	        replace(".", "$#$").replace(/\./g, "").replace("$#$", ".").replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
	    //添加分隔符     
		$amountInput.val(toThousands(temp));
	});
	//鼠标移出事件--保留两位小数
	$("#count").on('blur', function () {
	    var $amountInput = $(this);
	    //最后一位是小数点的话,移除
	    $amountInput.val(($amountInput.val().replace(/\.$/g, "")));
	    //保留两位小数
	    var s = $amountInput.val();
	    var arr = s.split(".");
	    if(s == ""){
	    	 $amountInput.val("0.00");
	    	 return;
	    }else if(arr.length == 1){//没有小数点
	    	$amountInput.val(s + ".00");
	    	return;
	    }else if(arr.length > 1 && arr[1].length < 2){//有小数点
	    	$amountInput.val(s + "0");
	    	return;
	    }
	});
}); 
</script>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值