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>

获取焦点后:

失去焦点后:

原文地址:https://www.cnblogs.com/lingdu87/p/9592731.html