Ext.js 中的 numberfield 自动截取0的问题

网上百度查到的问题各式各样的都有,在这里我只代表自己的看法和见解,同时也欢迎大家来更正

项目环境

前端框架 Ext.js 4.2

需求

由于公司项目做的财务系统,因此需要对小数点进行管控,小数点位数问题等,遇到的问题是当显示数据的时候numberfield 会将小数点末尾的0自动截取掉,导致精度不匹配

例如: 输入的数字是 12.210 系统前端就会截取0,最后变成 12.21

解决方案 修改Ext.js 中的源码,由于该项目导入的源码是 ext-all.js ,因此只能在上面做修改
在这里插入图片描述

找到这个内容
在这里插入图片描述

在这里插入图片描述

由于系统小数点设置中有多加一个是否进行补位的选择框,因此在Number 中自行添加了一个属性,用来判断是否进行自动补位,在页面做调用跟其他属性一样,通过属性 : true/false ,进行设置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编写好运行,就能发现Numberfield 不会自动截取0 了

附上 源代码:

valueToRaw: function (c) {
        var b = this, a = b.decimalSeparator;
        c = b.parseValue(c);
        //源代码
       /c = b.fixPrecision(c);
       /// c = Ext.isNumber(c) ? c : parseFloat(String(c).replace(a, "."));
        //c = isNaN(c) ? "" : String(c).replace(".", a);
       // return c
        /*2019-06-28 由于需要自动补位 numberfield 不自动截取0 注释了下面代码*/
        if(this.decimalAutoType){  /*自动补位*/
            c = b.fixPrecision(c);
            c = Ext.isNumber(c) ? c : String(c).replace(a, ".");
            //c = isNaN(c) ? "" : (String(c).replace(".", a);
            c = isNaN(c) ? "" : c.toFixed(this.decimalPrecision, this.decimalAutoType);
            if(c == 0 || parseFloat(c) == 0){
                return 0;
            }
            return c
        }else{ /*不自动补位*/
            c = isNaN(c) ? "" : String(c).replace(".", a);
            var temp = Ext.isNumber(c) ? c : parseFloat(String(c).replace(a, "."));
            return temp
        }
    },


  parseValue: function (a) {
       /*2019-06-28 由于需要自动补位 numberfield 不自动截取0 注释了下面代码
        a = parseFloat(String(a).replace(this.decimalSeparator, "."));*/
        if(this.decimalAutoType){
            a = parseFloat(String(a).replace(this.decimalSeparator, "."));
        }else{
            a = String(a).replace(this.decimalSeparator, ".");
        }

        return isNaN(a) ? null : a
    },
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值