美文网首页Web开发
JS:控制金额的输入,完全避免用户乱搞(直接处理为允许的格式)

JS:控制金额的输入,完全避免用户乱搞(直接处理为允许的格式)

作者: 以气御码 | 来源:发表于2020-07-10 20:54 被阅读0次

    进入我的主页,查看更多JS的分享!
    我的代码有多短,本篇内容就有多短!

    先实现标题的内容,贴出代码:

    //格式化金额的输入
    function formatPrice(p) {
      if (!p) {
        return "0.0";
      } else {
        p += "";
        //去除非数字,只保留数字和.
        p = p.replace(/[^\d.]/g, "");
    
        //必须保证第一个为数字而不是.
        p = p.replace(/^\./g, "0.");
    
        // 保留第一个.
        p = p.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
        // 保留第一个.
        // p = p.replace(/\.{2,}/g, ".");
    
        //只取一位小数 不进位,{1}表示保留1位小数
        p = p.replace(/^(\-)*(\d+)\.(\d{1}).*$/, "$1$2.$3");
    
        // 返回时 处理0199、0.这种情况
        return parseFloat(p);
      }
    }
    

    测试效果

    console.log(formatPrice("哈哈10.嘿嘿5.99.589"));
    //输出:10.5
    
    console.log(formatPrice("哈哈.嘿嘿5.99.589"));
    //输出:0.5
    

    补充

    //只保留一位小数,{0,2}表示保留两位
    p = Number(p.toString().match(/^\d+(?:\.\d{0,1})?/));
    
    //保留一位小数,且小数位四舍五入
    p = parseFloat(p).toFixed(1);
    

    如果你用了其它方法来实现,其中不建议进行乘法除法的运算,因为js的加减乘除,在带小数时可能会丢失精度(虽然有解决办法,但放在这里就麻烦了)。
    然后就没有然后了,欢迎补充。


    相关文章

      网友评论

        本文标题:JS:控制金额的输入,完全避免用户乱搞(直接处理为允许的格式)

        本文链接:https://www.haomeiwen.com/subject/bokvcktx.html