我有一个文本字段、组合和收音机。我想在单击一个按钮时获取这 3 个字段的值。我如何在不使用的情况下获得上述 3 的值Ext.getCmp('id').getValue();
有没有其他方法可以获取值,
请告诉我。
我有一个文本字段、组合和收音机。我想在单击一个按钮时获取这 3 个字段的值。我如何在不使用的情况下获得上述 3 的值Ext.getCmp('id').getValue();
有没有其他方法可以获取值,
请告诉我。
这取决于您包含字段的方式以及要单击以获取其值的按钮。
您可以上下导航容器
var TheComponent = this.up('form').down('#MyTextField')
这会爬上你的容器层次结构,直到它找到一个“表单”容器(不管它的 ID 或名称是什么),然后它们会向下爬,直到找到一个 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 即可轻松实现。我将命名包含字段的主面板,但这只是为了方便。
看看这个小提琴
代码非常简单:
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
,你不需要一个表格,尽管这样更合乎逻辑。