2

在我们的应用程序中,我们有一个文本字段和一个复选框。默认情况下,文本字段应该是只读的。Whenever check box is checked, textfield should be editable.

我们能够做到上述要求。但是我们还必须以这样一种方式显示文本字段,当它是只读的时,用户应该觉得他们不能编辑它。

我们为此使用了以下代码:

{
   xtype:'textfield',
   id:'textfieldid',
   readOnly:true,
   fieldCls:'x-item-disabled'
    ...
}


{
    xtype:'checkbox',
    listeners:{
        change:function(thisCmp,newValue,oldValue){
                if(newValue==true){
                    Ext.getCmp('textfieldid').addCls('x-item-disabled');
                } else {
                    Ext.getCmp('textfieldid').removeCls('x-item-disabled');
                }
            }
    }
}

但是有些我无法让它工作。

有人可以建议解决它的方法吗?

实际上我需要提交该字段。如果禁用,则不会提交该字段。所以我尝试动态设置 fieldCls。

4

1 回答 1

2

你不能使用setDisabled方法Ext.form.field.Text吗?

{
    xtype:'checkbox',
    listeners:{
        change:function(thisCmp,newValue,oldValue){
             Ext.getCmp('textfieldid').setDisabled(newValue);
        }
    }
}

并且也不要指定fieldCls:'x-item-disabled'为 TextField 的配置,它将由setDisabled方法自动管理,如果您想最初将文本字段呈现为禁用,那么您可以disabled : true像这样在配置中使用

{
   xtype:'textfield',
   id:'textfieldid',
   disabled: true
    ...
}

另外一个选项:

你最初使用 fieldCls 属性来指定禁用类,这可能是错误的,而不是你可以做这样的事情

{
   xtype:'textfield',
   id:'textfieldid',
   readOnly:true,
   listeners : {
       afterrender : function() {
            this.addCls('x-item-disabled');
       },
       scope : this
   }
    ...
}
于 2013-03-15T20:08:02.267 回答