【问题标题】:ExtJs 3 - Add listenerExtJs 3 - 添加监听器
【发布时间】:2011-05-16 09:29:49
【问题描述】:

我想完成:

  • 当ComboBox中的某些项目被选中,隐藏形式或完整的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);
    }],

有人知道解决方案吗?提前致谢。

【问题讨论】:

  • 你添加一个select 监听器到Ext.FormPanel,当它应该用于Ext.form.ComboBox

标签: extjs


【解决方案1】:

试试这个:

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();
    }
});

【讨论】:

  • 感谢 MMT!这很好用,但我更喜欢 Bigfei 描述的对象。
【解决方案2】:

正如 Warung 所写,应该这样做:

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,nval,oval) {
            alert("Hit");
    }]
});

【讨论】:

  • 它不适用于数组表示法。 Bigfei 所写的对象确实有效。感谢您帮助我朝着正确的方向前进!
  • select 不应该用引号引起来!
【解决方案3】:

首先,FormPanel 上的侦听器不是必需的,因为 FormPanel 不会在其自己的事件上触发任何“选择”事件。您应该在 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();

             }
         }
    }
});

【讨论】:

  • 谢谢!这是我一直在寻找的答案。对象符号确实工作得很好。我使用了 sra 描述的数组表示法,但那个没有用。感谢您帮助我!
猜你喜欢
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 2011-10-12
  • 2013-07-20
  • 2012-01-22
  • 2013-10-03
相关资源
最近更新 更多