Sencha 6.5.2(Modern)Numberfield带小数点分隔符

时间:2018-11-08 12:14:59

标签: extjs

我有一个数字字段,只需要两个小数点和逗号(如decimalSeparator),在文档中已经用我接下来输入的数据填充了数字字段:

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

当我尝试写'2,2'时,不要让我输入逗号,并且numberfield的精度验证值为3,而不是2。

我也曾尝试更改Ext.field.Number的全局原型,但无法进行以下操作:

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

有人可以帮助我吗?我无法使用文本字段,因为我需要科尔多瓦显示数字键盘。

谢谢!

2 个答案:

答案 0 :(得分:0)

现代使用:

使用

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

答案 1 :(得分:0)

好吧,我在sencha上发现了NumberField的问题。 NumberField和SpinnerField格式在移动设备上不起作用,这是因为当移动sencha建立类型为number的输入时,chrome和cordova引擎在逗号支持下不起作用。

因此,如果您需要在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);
            }
        },

    }
});