Как ограничить ввод числового поля от ввода более двух знаков после запятой

Кажется очень простым заставить десятичную дробь с некоторой точностью, и их много. Я пытался использовать все как:

1-й способ: использование конфигурации

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

Альтернатива: путем переопределения или расширения, как показано здесь

Или с помощью регулярных выражений

Все они работают с размытием или каким-либо другим событием или функцией. Это способ остановить ввод после двух десятичных знаков. В текстовых полях мы можем использовать конфигурации RegEx и maskRe. десятичные дроби. Любая помощь приветствуется. Спасибо.


person Dev    schedule 04.06.2013    source источник


Ответы (1)


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();
                }
            }
        }
    }
});
person rixo    schedule 04.06.2013
comment
Спасибо, риксо. На самом деле я пробовал это раньше, но пропустил e.stopEvent(); - person Dev; 04.06.2013
comment
просто возникла проблема. Есть ли у них что-нибудь, чтобы ограничить цифры перед десятичной запятой до 15. Я пробовал с другим регулярным выражением в приведенном выше решении, которое вы предоставили. Не могли бы вы помочь мне с этим. Еще раз спасибо - person Dev; 04.06.2013
comment
Вышеупомянутое решение имеет некоторую проблему › Я могу ввести три 0, за которыми следует любой нет. цифр после запятой. - person Dev; 07.06.2013