问题描述
||
我想完成:
当选择组合框中的某些项目时,隐藏表单或完整div中的其他字段。
这是我的组合框:
var typeIDcombo = new Ext.form.ComboBox({
fieldLabel: \'Type\',name: \'typeid\',store: typeIdData,displayField:\'name\',valueField: \'typeid\',hiddenName: \'typeid\',typeAhead: false,mode: \'local\',triggerAction: \'all\',emptyText:\'Selecteer het type link\',forceSelection: true,selectOnFocus:true,allowBlank: false,value: \'Selecteer een type\',});
我已将侦听器添加到我的var form = new Ext.FormPanel中。但这是行不通的。
listeners: [{
\'select\' : function(field,nval,oval) {
alert(field);
}],
有人知道解决方案吗?提前致谢。
解决方法
首先,FormPanel上的侦听器不是必需的,因为FormPanel不会在其自身的事件上触发任何\'select \'事件。您应该在FormPanel内的组件上添加侦听器,以侦听组件触发的指定事件。
对于您的情况,很简单,如下所示:
var typeIDcombo = new Ext.form.ComboBox({
fieldLabel: \'Type\',name: \'typeid\',store: typeIdData,displayField:\'name\',valueField: \'typeid\',hiddenName: \'typeid\',typeAhead: false,mode: \'local\',triggerAction: \'all\',emptyText:\'Selecteer het type link\',forceSelection: true,selectOnFocus:true,allowBlank: false,value: \'Selecteer een type\',listeners:{
select:function(field,newVal,oldVal){
if(newVal == \'HIDE_SOMETHING\'){
Ext.getCmp(\'fieldId\').hide();
Ext.getCmp(\'formId\').doLayout();
}
else if(newVal == \'SHOW_SOMETHING\'){
Ext.getCmp(\'fieldId\').show();
Ext.getCmp(\'formId\').doLayout();
}
}
}
});
,尝试这个:
typeIDcombo.on(\'select\',function(combo) {
if (combo.value == \'ABC\') {
Ext.getCmp(\'field\').show();
Ext.getCmp(\'form\').doLayout();
} else {
Ext.getCmp(\'field\').hide();
Ext.getCmp(\'form\').doLayout();
}
});
,正如Warung所写,应该这样做:
var typeIDcombo = new Ext.form.ComboBox({
fieldLabel: \'Type\',listeners: [{
select : function(field,nval,oval) {
alert(\"Hit\");
}]
});