2012-08-07 64 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领域来完成,而你并不需要为一种形式,但它更这样的逻辑。

相关问题