JS-鼠标移出input,保留两位小数且添加千分位分隔符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangqing84411433/article/details/81073132

代码如下:

鼠标移出input后保留两位小数,添加千分位分隔符<input class="credit" type="text" value="0.00"/>

<script type="text/javascript">
//千分位的分隔符
function toThousands(num) {
	//若没有任何数据则直接返回
	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(){
	$(".credit").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));
	});
	//鼠标移出事件
	$(".credit").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>

猜你喜欢

转载自blog.csdn.net/wangqing84411433/article/details/81073132