我需要在sencha extjs 6中使用numberfield,但是默认情况下numberfield允许十进制输入。我的应用程序不是必需的,我尝试了allowDecimals: false,的十进制输入。它可能在文本字段上起作用。有禁用任何配置或方法的输入吗?
注意:在PC中,我可以编写防止该方法的方法,但是我的应用程序正在移动设备上运行,因此,我对此一无所知。谢谢。

最佳答案

我强烈建议您在这种情况下使用numberfield。当然,这将接受桌面浏览器中的所有字符。但是您会看到,通过显示数字键盘,它仅接受移动电话中的数字。

现代版本的Sencha Touch框架不提供十进制精度参数...但是有一种方法可以解决此问题。在设置数字字段的值之前,只需放置这些行。

Ext.form.Number.override ({

    applyValue : function(value){
        var minValue = this.getMinValue(),
            maxValue = this.getMaxValue();

        if (Ext.isNumber(minValue) && Ext.isNumber(value)) {
            value = Math.max(value, minValue);
        }

        if (Ext.isNumber(maxValue) && Ext.isNumber(value)) {
            value = Math.min(value, maxValue);
        }

        value = parseFloat(value).toFixed(0); // where 0 is your decimal precision value
        return (isNaN(value)) ? '' : value;
    }
});


在此示例中,您可以看到实现:

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.form.Number.override({

            applyValue: function (value) {
                var minValue = this.getMinValue(),
                    maxValue = this.getMaxValue();

                if (Ext.isNumber(minValue) && Ext.isNumber(value)) {
                    value = Math.max(value, minValue);
                }

                if (Ext.isNumber(maxValue) && Ext.isNumber(value)) {
                    value = Math.min(value, maxValue);
                }

                value = parseFloat(value).toFixed(0); // where 0 is your decimal precision value
                return (isNaN(value)) ? '' : value;
            }
        });
        Ext.create({
            xtype: 'window',
            width: 200,
            height: 200,
            items: [{
                xtype: 'numberfield'
            }]
        }).show();
    }
});


Here is a working fiddle

关于javascript - Sencha Extjs 6如何在numberfield中禁用十进制输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41337825/

10-09 18:10