Сенча 6.5.2 (современный) числовое поле с десятичным разделителем - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть числовое поле, которое должно иметь только два десятичных знака и запятую, как decimalSeparator, после того, как документация заполнила числовое поле данными, которые я поставил следующим:

         {
            xtype: 'numberfield',
            margin: '5 0 5 0',
            allowDecimals: true,
            decimalPrecision: 2,
            decimalSeparator: ',',
            minValue: 0.01,
            step: 0.01
         }

Когда я пытаюсь написать '2,2', числовое поле не оставляет меня запятой, а числовое поле имеет точность точности 3 вместо двух.

Также я пытался изменить глобальный прототип Ext.field.Number, но не получилось:

    Ext.field.Number.prototype.thousandSeparator = '.';
    Ext.field.Number.prototype.decimalSeparator = ',';

Кто-нибудь может мне помочь? Я не могу использовать текстовое поле, потому что мне нужна цифровая клавиатура дисплея кордовы.

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Ну, я нашел проблему с NumberField на sencha. Формат NumberField и SpinnerField не работает на мобильном телефоне , потому что, когда мобильная сенча устанавливает ввод с типом номера, в то время как Chrome и Cordova Engine не работают с поддержкой запятой.

Так что если вам нужно отобразить цифровую клавиатуру на движке Cordova или вам нужна поддержка чисел для мобильного устройства, вы должны переопределить класс, указать некоторые переменные, я привожу здесь пример и, возможно, @Leandro Fantinel может сделать скрипку.

Ext.util.Format.thousandSeparator = '.';
Ext.util.Format.decimalSeparator = ',';

Ext.define('jsclient.view.articleCheck.decimalNumber.DecimalEuropeNumber11122', {
    extend: 'Ext.field.Number',
    alias: 'widget.decimalNumber',

    requires: [
        'Ext.field.Number'
    ],

    inputType: 'text',
    decimals: 2,

    listeners: {
        initialize: function (_this, eOpts) {
            //This attribute make that cordova display a numeric number
            _this.element.dom.querySelector("input").setAttribute("inputmode", "numeric");
        },

        change: function (_this, eOpts, value, oldValue) {
            var objRegExp = /^\d+\.\d{0,2}$/;
            if (objRegExp.test(oldValue) && !objRegExp.test(value)) {
                _this.setValue(oldValue);
            }
        },

    }
});
0 голосов
/ 13 ноября 2018

В современном использовании:

использовать

Ext.util.Format.thousandSeparator = '.';
Ext.util.Format.decimalSeparator = ',';

И использовать «spinnerfield» вместо «numberfield»

{
    xtype: 'spinnerfield',
    anchor: '100%',
    fieldLabel: 'Numbers',
    margin: '5 0 5 0',

    // decimalPrecision: 2,   /*classic property*/
    // decimalSeparator: ',', /*classic property*/
    // allowDecimals: true,   /*classic property*/
    decimals: 2,

    // step: 0.01 /*classic property*/
    stepValue: 0.01,

    minValue: 0.01
}

см. Скрипку: https://fiddle.sencha.com/#fiddle/2nlo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...