2012-08-07 68 views
0

我有一個Textfield,Combo和一個無線電。我想通過點擊一個按鈕來獲得這三個字段的值。我怎樣才能得到3以上的值而不使用Ext.getCmp('id').getValue();extjs 4.1.0如何在不使用ID的情況下獲得文本字段值

是否有任何其他方法是他們得到的價值,
請讓我知道。

+0

這些控件是從哪裏來的?如果是的話,你可以按照someFormPanel.getForm()。getValues()的方法做一些事情。 – Izhaki 2012-08-07 14:02:35

回答

2

這取決於你如何包含你的字段和你想要點擊的按鈕來獲取它們的值。

可以導航向上和向下的容器

var TheComponent = this.up('form').down('#MyTextField') 

這爬上你的容器層次結構,直到它找到一個「形式」容器(不要緊,它的編號或名稱),並將它們爬下直到它會找到一個ID爲'MyTextField'的組件:

如果您的單選按鈕位於單選按鈕組容器中,則可以檢索具有所有'on'鍵/值的對象。

如果您的容器是表單,則可以使用lzhaki提出的方法並檢索包含表單上所有值的對象。請記住,組合框的行爲與文本框的行爲不同。

這些方法中的每一個都會返回單個值或包含一組值的對象。

0

在ExtJS的4.1,我發現在現有的例子是接近,但不正確的:

var TheComponent = this.up('form').down('#MyTextField') 

有一個在形式對象(顯然表單字段中不包含下行方法的導航沒有「下」方法邏輯)。

下面是對我來說,設置初始焦點在窗體內的編輯字段。

var theForm = this.down('form').getForm(); 
var theField = theForm.findField('idEditVolname'); 
theField.focus(); 

你仍然必須使用getForm()使嵌入表單對象,其次是findField()找到特定領域 - 至少這是我的作品。

0

我不知道這是否仍然相關,但在這裏。
首先,在Extjs4及更高版本中,您使用Ext.ComponentQuery.query()而不是Ext.getCmp()
你可以直接訪問你所有的xtype,就像其他答案中提到的updown方法一樣,但是這個方法不需要任何錨點,因爲它搜索整個組件層次結構。由於您只有頁面上的每個元素中的一個,如果不使用id就很容易實現。 我會命名包含字段的主面板,但這只是爲了方便。
看看這個fiddle

的代碼是非常簡單的:

var panel = Ext.create('Ext.panel.Panel', { 
    renderTo: Ext.getBody(), 
    name: 'myForm', 
    title: 'Sample Test', 
    layout: 'anchor', 
    height: 200, 
    items: [{ 
     xtype:'textfield', 
     fieldLabel: 'text', 
     value: 'Oh yeah!' 
    }]  
}); 

var myVal = Ext.ComponentQuery.query('panel[name=myForm] textfield')[0]; 
alert (myVal.getValue()); 

同樣可以與radiocombo領域來完成,而你並不需要爲一種形式,但它更這樣的邏輯。

相關問題