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>
获取焦点后:
失去焦点后: