如何防止在 extjs 数字字段中输入负值

How to prevent typing negative values in extjs number field

这里我使用的是 ExtJS 5.1.2。

我必须防止在数字字段中输入负值。 通过为 "minValue" 属性 'Down' 使用“0”值,键和鼠标滚轮不允许负值。

但用户可以在字段中输入负值。

是否有任何配置可以防止在数字字段中输入负值?

示例代码:

Ext.define('MyApp.view.field.MyNUmber', {
    extend:'Ext.form.field.Number',
    xtype: 'myNumberField',
    fieldLabel: 'My NUmmber',  
    allowBlank: true,
    allowDecimals: true,
    decimalPrecision: 2,
    minValue: 0,
    step: 0.25
});

不确定这是否是您要查找的内容,但您可以在数字字段上设置侦听器并在输入的值小于 0 的情况下更改该字段的值:

 listeners: {
     change: function(field, value) {
         value = parseInt(value, 10);
         if (value < 0) {
             field.setValue(0);
         }
     }
 }

Sample fiddle here

过去,我用过allowExponential: false... example。我意识到这并不是真正的目的(它可能是一个错误),但它似乎可以解决问题......请注意,如果你起飞 minValue: 0,那么你可以输入负数。

Ext.application({
    name : 'Fiddle',

    launch : function() {
        Ext.create('Ext.form.Panel', {
            title: 'On The Wall',
            width: 300,
            bodyPadding: 10,
            renderTo: Ext.getBody(),
            items: [{
                xtype: 'numberfield',
                anchor: '100%',
                name: 'bottles',
                fieldLabel: 'Bottles of Beer',
                value: 99,
                maxValue: 99,
                minValue: 0,
                allowExponential: false,
                allowDecimals: true
            }],
            buttons: [{
                text: 'Take one down, pass it around',
                handler: function() {
                    this.up('form').down('[name=bottles]').spinDown();
                }
            }]
        });
    }
});