JS金额输入数字/格式校验,(含负数)自动千分位格式化,保留/补全两位小数

/**
 * 字符串非空判断
 *
 * @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)"/>
发布了65 篇原创文章 · 获赞 8 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/u012382791/article/details/100098168