我有以下代码在表单中创建一个文本字段。
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
但这项工作无关紧要。有什么想法吗?
答案 0 :(得分:0)
试试这个
change: function(field, newValue,) {
field.setDisabled(newValue == 'abc');
}
的事件和方法的更多信息
<强> 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());
}