input输入金额时格式化
input输入金额格式化,限制只能输入数字,可以为负;
通过onkeyup事件正则表达式 只能输入数字,然后再通过foucs和blur事件来修改金额的样式;
代码如下:
<input type="text" id="money" class="yt-input" onkeyup="value=value.replace(/[^\d\.-]/g,'')" />
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript">
	var myTest = {
		  init:function(){
			    myTest.events();
		  },
		  events:function(){
			    $("#money").on("focus",function(){
				      if($(this).val()!=''){
					         //调用还原格式化的方法  
					        $(this).val(myTest.rmoney($(this).val()));
				      }
			    });	
			    $("#money").on("blur",function(){
				      if($(this).val()!=""){
					         //调用格式化金额方法
					        $(this).val(myTest.fmMoney($(this).val()));
				      }
			    })
		  },
		  /**
		   * 金额格式化处理
		   * 金额格式化还原方法
		   * @param {Object} 金额的字符串
		   */
		  rmoney: function(s) {
			    //转成string类型
			    s = s+"";
			    return parseFloat(s.replace(/[^\d\.-]/g, ""));
		  },
		  /**
		   * 金额格式化处理
		   * @param {Object} s 需要处理的字符串
		   * @param {Object} n 小数点保留位数
		   */
		  fmMoney: function(s, n) {
			    var lose='';  //负号
			    if(s < 0){  //判断是否是负数
				      s = (s+'').substring(1);  //截取-号
				      lose='-';
			    }
			    n = n > 0 && n <= 20 ? n : 2;
			    s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
			    var l = s.split(".")[0].split("").reverse(),
				    r = s.split(".")[1];
			    t = "";
			    for(i = 0; i < l.length; i++) {
				      t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
			    }
			    return lose + '' + t.split("").reverse().join("") + "." + r;  //拼接
		   },
	}
	$(function(){
		  myTest.init();
	})
</script>
获取焦点后:

失去焦点后:

                    
                
                
            
        
浙公网安备 33010602011771号