ExtJS - 根据输入值禁用

时间:2015-03-01 18:27:09

标签: extjs extjs4.1

我有以下代码在表单中创建一个文本字段。

buildForm : function() {
    this.time = new Ext.form.TextField({
        name : 'estimate',
        allowBlank : false,
        fieldLabel : 'Estimate',
        onBlur : function(field) {
            return this.setValue(this.getValue().replace('.', ','));
        }
    });
}

它正常工作。

现在,当我渲染此表单时,在此字段value="abc"中,我需要将disabled设置为此字段。

我试过了:

disabled : function() { return this.getValue() == 'abc' ? true : false;}
disabled : function(field) { return this.getValue() == 'abc' ? true : false;}
disabled : function(field) { return field.getValue() == 'abc' ? true : false;}
disabled : this.getValue() == 'abc' ? true : false

但这项工作无关紧要。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

试试这个

change: function(field, newValue,) {
     field.setDisabled(newValue == 'abc');
} 

检查API以获取有关TextField

的事件和方法的更多信息

<强> UPD:

如果您只需要在表单渲染上禁用文本字段,只需在 buildForm 函数中添加此行。

this.time.setDisabled(this.time.getValue() == 'abc')

另一种方法是在 TextField&#39> 渲染事件中添加逻辑。

render: function(field) {
    field.setDisabled(field.getValue() == 'abc')
}

UPD 2:

我想,你的问题是设定价值或按顺序。

这是一个工作样本。

注意this.time.setValue(&#39; abc&#39;) 而不是this.time.value =&#39; abc&#39;,它不会起作用。

buildForm: function() {



        this.timeFld = Ext.create('Ext.form.TextField', {
            name: 'estimate',
            allowBlank: false,
            fieldLabel: 'Estimate',
            onBlur: function(field) {
                return this.setValue(this.getValue().replace('.', ','));
            },
            listeners: {
                render: function(field) {
                 field.setDisabled(field.getValue() == 'abc');
                }
            }
        });

        this.timeFld.setValue('abc');

       // this.time.setDisabled(this.time.getValue() == 'abc');

        Ext.create('Ext.form.Panel', {
            title: 'Test',
            items: [
             this.timeFld
            ],
            renderTo: Ext.getBody()
        });

      //  alert(this.timeFld.getValue());
    }