2012-10-04 42 views
1

我試圖用組合字符串中的偵聽器顯示/隱藏ext.js(xtype:「compositefield」)。一切運作良好,除了複合區域的標籤不會隱藏。如何選擇整個複合字段DOM元素,以便我可以在其上使用.hide()/。show()?在Ext.js 3.4中隱藏/顯示帶有標籤的Ext.js複合字段

爲compositefield代碼:

xtype: 'compositefield', 
        labelStyle: 'width: 60px', 
        fieldLabel: 'Player 1', 
        id: "player_1_fields", 
        msgTarget: 'under', 
        items:[ 
         {xtype: 'displayfield', value: 'Name',margins: '3 5 0 22'}, 
         {xtype: 'textfield', name: 'props_name_1', width: 135}, 
         {xtype: 'displayfield', value: 'Score',margins: '3 5 0 0'}, 
         {xtype: 'numberfield', name: 'props_score_n1', width: 35} 
        ] 

爲聽衆代碼:

listeners: { 
            select: function(combo, record, index) { 
            if (combo.getValue() == "2") 
               { 
               Ext.getCmp("player_1_fields").getEl().hide(); 

               } 
              else 
               { 
               Ext.getCmp("player_1_fields").getEl().show(); 

               } 
            } 
            } 

回答

2

試試這個代碼:

select: function(combo, record, index) { 
    if (combo.getValue() == "2") { 
      Ext.getCmp("player_1_fields").getEl().up('.x-form-composite').hide(); 
    } else { 
      Ext.getCmp("player_1_fields").getEl().up('.x-form-composite').show(); 
    } 
} 

最多應該找父母與特定的類(和你希望成爲整個表單項目的ExtJs類)。

+0

.up()來自Ext.js 4.1 –

+0

不是,它也是3.4,它甚至在2.1文檔中。這裏是[鏈接到ExtJs 3.4中的Element.up方法](http://docs.sencha.com/ext-js/3-4/#!/api/Ext.Element-method-up) – sbgoran

+0

對不起,快和錯假設,我得到了:TypeError:Ext.getCmpup(「..」)。up不是一個函數。必須使用元素,而不是getCmp。 (Ext.getCmp(「player_1_fields」)。getEl()。up('.x-form-item')。hide())。感謝您的幫助! –