0

我有一个文本字段、组合和收音机。我想在单击一个按钮时获取这 3 个字段的值。我如何在不使用的情况下获得上述 3 的值Ext.getCmp('id').getValue();

有没有其他方法可以获取值,
请告诉我。

4

3 回答 3

2

这取决于您包含字段的方式以及要单击以获取其值的按钮。

您可以上下导航容器

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

这会爬上你的容器层次结构,直到它找到一个“表单”容器(不管它的 ID 或名称是什么),然后它们会向下爬,直到找到一个 ID 为“MyTextField”的组件

如果您的单选按钮位于单选按钮组容器中,您可以检索具有所有“on”键/值的对象。

如果您的容器是一个表单,您可以使用 lzhaki 提出的方法并检索一个包含表单上所有值的对象。请记住,组合框的行为与文本框不同。

这些方法中的每一个都将返回单个值或包含一组值的对象。

于 2012-08-07T19:12:42.897 回答
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()定位特定字段 - 至少这对我有用。

于 2012-08-25T16:16:23.127 回答
0

我不知道这是否仍然相关,但这里有。
首先,在 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,你不需要一个表格,尽管这样更合乎逻辑。

于 2012-09-22T19:40:15.833 回答