如何限制数字字段输入输入两个以上的小数

时间:2013-06-04 07:09:13

标签: extjs extjs4.1 extjs4.2

  

似乎很容易强制小数到某种精度,它们有很多种方法。我尝试过使用all:

第一种方式:使用配置

            xtype: 'numberfield',
            fieldLabel: 'Balance',
            name: 'balancefield',    
            decimalPrecision:2

替代方式:通过覆盖或扩展显示here

或使用正则表达式

  

所有这些都适用于模糊或其他一些事件或函数。这是一种在两位小数后停止输入的方法。在 textfields 中,我们可以在数字字段中使用 RegEx maskRe configs.But,它们就像maskRe一样,这样用户就无法输入两个以上小数点。   感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

maskRe确实在数字字段内部使用,因此您必须模仿其行为。也就是说,监听字段的keypress事件,如果输入适合您,则停止事件。

示例,使用正则表达式强制执行两位十进制精度:

Ext.widget('numberfield', {
    renderTo: Ext.getBody()
    ,enableKeyEvents: true
    ,listeners: {
        keypress: function(field, e) {
            var v = field.getValue();
            if (!Ext.isEmpty(v)) {
                if (/\.\d{2,}/.test(v)) {
                    e.stopEvent();
                }
            }
        }
    }
});