我想根据多选组合框(标签字段)中选择的项目动态显示和隐藏表单中的字段。
在组合框中选择的每个项目都有几个关联的隐藏表单字段(待显示)。
这些字段具有属性“hidden:true”;
我可以显示这些字段,但是当我从组合框字段或 de tagfield 中删除项目时,我无法隐藏它们。
listeners:{
select:function( combo, records, eOpts) {
var combo = Ext.ComponentQuery.query('#combo')[0];
var field = Ext.ComponentQuery.query('#A')[0];
var field1 =Ext.ComponentQuery.query('#B')[0];
var field2 =Ext.ComponentQuery.query('#C')[0];
var records = combo.getValue();
console.log(records);
for (var i = 0, count = records.length; i < count; i++) {
switch(records[i]) {
case 'itemone':
if(field.isHidden()) {
field.show();
}
else {
field.hide();
}
break;
case 'itemtwo':
if(field1.isHidden()) {
field1.show();
}
else {
field1.hide();
}
break;
case 'itemthree':
if(field2.isHidden()) {
field2.show();
}
else {
field2.hide();
}
break;
}
}
}
}
console.log(records) 提供以下结果:
显示:
["itemone"]
["itemone", "itemtwo" ]
["itemone", "itemtwo", "itemthree"]
隐藏:
["itemone", "itemtwo"]
["itemone"]
请给我一些更正代码的建议。
注:抱歉之前发错地方的下一篇文章
我试图实施你的建议,但没有成功(初学者的困难)。
我的代码:
listeners:{
select:function( combo, records, eOpts) {
var combo = Ext.ComponentQuery.query('#combo')[0];
var fields = Ext.ComponentQuery.query('[autoHideTag]');
var records = combo.getValue();
console.log(records);
for (var i = 0, count = records.length; i < count; i++) {
fields.setVisible(records.indexOf(fields.autoHideTag) !== -1 );
switch(records[i]) {
case 'itemone':
if(field.isHidden()) {
field.show();
}
else {
field.hide();
}
break;
case 'itemtwo':
if(field1.isHidden()) {
field1.show();
}
else {
field1.hide();
}
break;
case 'itemthree':
if(field2.isHidden()) {
field2.show();
}
else {
field2.hide();
}
break;
}
}
}
}
萤火虫 说:
类型错误:fields.setVisible 不是函数
请您帮忙提供更多建议。
谢谢。