我在ExtJs中有这个表单.如果field1不为空,则field2不能为空.但即使听众正在解雇,它也无法正常工作.
{
xtype: 'panel',
title: 'title 1',
items: [{
xtype: 'fieldset',
title: 'field A',
items: [{
xtype: 'textfield',
fieldLabel: 'Line 1',
id: 'field1',
listeners: {
change: function(f, new_val) {
if (new_val) {
//alert("change" + new_val);
f.field2.allowBlank = false;
} else {
f.field1.allowBlank = true;
}
}
}
code for field2
}]
}]
}
最佳答案:
部分答案:
您的代码不起作用的原因是因为allowBlank是一个配置值 – 它只在创建组件时有效.我一直看到这个错误 – 在浏览API文档时,您需要记住所有这些配置选项仅在创建对象时有效 – 它们不是可以设置为修改现有对象行为的公共属性.
也就是说,我很惊讶API中没有setAllowBlank()方法.如果我能找到办法,我会继续环顾四周并修改这个答案.
编辑:从我阅读TextField源代码看,你的方法应该可行.所以问题是为什么不是.
编辑2:您可能无法获得对TextFields的引用. f.field1可能没有指出你的想法.您可以通过在TextField配置中添加ref:’field1’来解决此问题.然后你的FormPanel将有一个名为field1的属性,你可以参考.