ExtJs NumberField验证

oor*_*ile 4 validation extjs

我有一个像下面这样的复合元素

{
    xtype: 'compositefield'
    ,hideLabel: true
    ,labelWidth: 100
    ,items: [
        {
            xtype: 'displayfield'
            ,width: 160
            ,value: 'field 1'
        },
        {
            xtype: 'checkbox',
            name: 'field1name',
            id: 'field1id',
            checked: true
        },
        {
            xtype: 'displayfield'
            ,width: 20
            ,value: 'Ft '
        },
        {
            xtype: 'numberfield',
            width: 50,
            allowNegative: false,
            value: 50,
            name: 'numberfield'     
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能进行自定义验证xtype:'numberField'

我不想放置配置选项allowBlank:false,而是我想在其他地方验证它,但在字段的一侧显示错误消息.

任何人都可以向我解释如何做到这一点?

下面是我如何做,它在firebug中产生"无效方法"错误:

Ext.get('numberfield').setActiveError('this Field Cannot be Blank');
Run Code Online (Sandbox Code Playgroud)

Ext.get('numberfield').markInvalid('this Field Cannot be Blank');
Run Code Online (Sandbox Code Playgroud)

tsg*_*tsg 6

我认为最简单的方法是使用验证器功能:

{
    xtype: 'compositefield'
    ,hideLabel: true
    ,labelWidth: 100
    ,monitorValid: true
    ,items: [
        [...]
        {
            xtype: 'numberfield',
            width: 50,
            allowNegative: false,
            value: 50,
            name: 'numberfield',
            validator: function(val) {
                if (!Ext.isEmpty(val)) {
                    return true;
                }
                else {
                    return "Value cannot be empty";
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)