extjs 4.1.0如何在不使用id的情况下获取文本字段值

时间:2012-08-07 11:13:31

标签: extjs4.1

我有一个Textfield,Combo和一个收音机。我想点击一个按钮获得这3个字段的值。如何在不使用Ext.getCmp('id').getValue();

的情况下获得3以上的值

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

3 个答案:

答案 0 :(得分:2)

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

您可以在容器中上下导航

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

这会爬上你的容器层次结构,直到它找到一个'form'容器(无论它的ID或名称是什么),然后它们向下爬,直到找到一个id为'MyTextField'的组件

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

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

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

答案 1 :(得分:0)

在ExtJS 4.1中,我发现前面的例子很接近,但不正确:

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

表单对象中没有“向下”方法(显然表单字段不包含在down方法的导航逻辑中)。

这对我来说是有效的,可以将初始焦点设置在表单中的编辑字段中。

var theForm = this.down('form').getForm();
var theField = theForm.findField('idEditVolname');
theField.focus();

您仍然必须使用getForm()来获取嵌入的表单对象,然后使用findField()来查找特定字段 - 至少这对我有用。

答案 2 :(得分: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字段也可以这样做,而且您不需要表格,尽管这样做更符合逻辑。