我有一个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