/**
* 字符串非空判断
*
* @param str
* @returns {boolean}
*/
function isNullOrWhiteSpace(str) {
if (str == null) {
return true;
}
if (typeof (str) == "undefined") {
return true;
}
if (typeof (str) == "string") {
return str.trim() === "" || str.trim() == null;
}
return false;
}
/**
* 保留小数千分位格式化
*
* @param num
* @returns {string}
*/
function numFormat(num) {
var res = num.toString().replace(/\d+/, function (n) { // 先提取整数部分
return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) {
return $1 + ",";
});
});
return res;
}
/**
* 金额change事件
*
* @param obj
*/
function toFormatAmount(obj) {
var val = $(obj).val();
// 空显示"-",可能负数
if (!isNullOrWhiteSpace(val.replace(/-/g, ""))) {
var valSplitBarLen = val.split("-").length;
var valSplitPointLen = val.split(".").length;
var sign = "-" == val.substr(0, 1) ? "-" : "";
// 最多一个小数点,输入为数字
if (valSplitBarLen > 2 || valSplitPointLen > 2 || !isNumber(val.replace(/-/g, "").replace(/,/g, "").replace(/\./g, ""))) {
$.notice("请输入正确格式", "danger");
$(obj).val("")
return;
}
var resVal = val.replace(/-/g, "").replace(/,/g, "");
resVal = parseFloat(resVal).toFixed(2);
resVal = numFormat(resVal);
resVal = sign + resVal;
$(obj).val(resVal);
}
}
/**
* 是否是数字
*/
function isNumber(num) {
var patrn = /^\d+(\.\d+)?$/;
if (!patrn.exec(num)) {
return false;
}
return true;
}
<!--页面调用-->
<input class="form-control" type="text" placeholder="请输入申请付款金额"
name="applyAmount" οnchange="toFormatAmount(this)"/>