角度Js限制小数点后/前的数字

时间:2017-06-12 11:21:34

标签: angularjs

我使用自定义指令将用户限制为十进制前的三个数字和十进制后的两个数字

我的指示

module.directive('decimalPlaces', function() {
                return {
                    link : function(scope, ele) {
                        ele.bind('keypress', function(e) {
                            var newVal = $(this).val() + (e.charCode !== 0 ? String.fromCharCode(e.charCode) : '');
                            if (!(/^\d{1,3}(\.$|\.\d{1,2}$|$)/).test(newVal)) {
                                e.preventDefault();
                            }
                        });
                    }
                };
            });

但是当我在十进制之前使用退格并完全清除时,我无法再次进入。

我需要完全删除它,是否有任何特定的正则表达式模式。

例如,首先我输入125.45

然后在十进制之前退格并使其成为.45,那么我无法在.45之前添加任何数字

考虑点

  1. 小数点前只有三位数(最大值)
  2. 十进制后只有两位数(最大)
  3. 如果用户只放20个没有浮动,如20,它应该显示为20.00

1 个答案:

答案 0 :(得分:0)

使用此正则表达式

if (!(/^\d{0,3}(\.\d{1,2})?$/).test(newVal)) {
    e.preventDefault();
}

如您所说的格式,如果值为20且应显示20.00,则必须执行