我有一個Textfield,Combo和一個無線電。我想通過點擊一個按鈕來獲得這三個字段的值。我怎樣才能得到3以上的值而不使用Ext.getCmp('id').getValue();
extjs 4.1.0如何在不使用ID的情況下獲得文本字段值
是否有任何其他方法是他們得到的價值,
請讓我知道。
我有一個Textfield,Combo和一個無線電。我想通過點擊一個按鈕來獲得這三個字段的值。我怎樣才能得到3以上的值而不使用Ext.getCmp('id').getValue();
extjs 4.1.0如何在不使用ID的情況下獲得文本字段值
是否有任何其他方法是他們得到的價值,
請讓我知道。
這取決於你如何包含你的字段和你想要點擊的按鈕來獲取它們的值。
可以導航向上和向下的容器
var TheComponent = this.up('form').down('#MyTextField')
這爬上你的容器層次結構,直到它找到一個「形式」容器(不要緊,它的編號或名稱),並將它們爬下直到它會找到一個ID爲'MyTextField'的組件:
如果您的單選按鈕位於單選按鈕組容器中,則可以檢索具有所有'on'鍵/值的對象。
如果您的容器是表單,則可以使用lzhaki提出的方法並檢索包含表單上所有值的對象。請記住,組合框的行爲與文本框的行爲不同。
這些方法中的每一個都會返回單個值或包含一組值的對象。
在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()
找到特定領域 - 至少這是我的作品。
我不知道這是否仍然相關,但在這裏。
首先,在Extjs4及更高版本中,您使用Ext.ComponentQuery.query()
而不是Ext.getCmp()
。
你可以直接訪問你所有的xtype,就像其他答案中提到的up
和down
方法一樣,但是這個方法不需要任何錨點,因爲它搜索整個組件層次結構。由於您只有頁面上的每個元素中的一個,如果不使用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());
同樣可以與radio
和combo
領域來完成,而你並不需要爲一種形式,但它更這樣的邏輯。
這些控件是從哪裏來的?如果是的話,你可以按照someFormPanel.getForm()。getValues()的方法做一些事情。 – Izhaki 2012-08-07 14:02:35