首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在extjs2中获取多个同名文本字段的值

如何在extjs2中获取多个同名文本字段的值
EN

Stack Overflow用户
提问于 2016-10-25 20:42:19
回答 2查看 214关注 0票数 2

当我点击add按钮时,我正在动态添加一个文本字段,之后我需要获得我在点击save按钮时动态添加的值。它在extjs2.0本身。

这是我正在编写的代码

代码语言:javascript
复制
var settingsEmailPanel = new Ext.FormPanel({
                                labelWidth: 75, // label settings here cascade unless overridden
                                url:'save-form.php',
                                frame:true,
                                id:'emailForm',
                                title: 'Email Servers',
                                bodyStyle:'padding:5px 5px 0',
                                width: 350,
                                defaults: {width: 230},
                                defaultType: 'checkbox',

                                items: [{
                                        boxLabel: 'Server 1',
                                        hideLabel: true,
                                        name: 'server1'
                                    },{
                                        boxLabel: 'Server 2',
                                        hideLabel: true,
                                        name: 'server2'
                                    },{
                                        boxLabel: 'Server 3',
                                        hideLabel: true,
                                        name: 'server3'
                                    }, {
                                        boxLabel: 'Server 4',
                                        hideLabel: true,
                                        name: 'server4'
                                    }
                                ],

                                buttons: [{
                                    text: 'Add',
                                    handler: function () {
                                    settingsEmailPanel.add({
                                            xtype: 'textfield',
                                            fieldLabel: 'New ServerName',
                                            name: 'newServer',
                                            allowBlank:false
                                        });
                                    settingsEmailPanel.doLayout();
                                    }
                                },{
                                    text: 'Save',
                                    handler: function () {
                                        alert("Save clicked");
                                        console.log(Ext.getCmp("emailForm").getForm().findField("newServer").getValue());
                                    }
                                }]
                            });
EN

回答 2

Stack Overflow用户

发布于 2016-10-28 15:40:14

在这里,我尝试做的是单击保存,我需要查询表单的每个元素,如果元素xtype为textfield,则按每个元素获取值并显示该值。

保存按钮的代码为:

代码语言:javascript
复制
{
    text: 'Save',
    handler: function() {
        var settingsEmailPanel = this.up().up();
        var settingsEmailPanelItem = settingsEmailPanel.items.items;
        for (var i = 0; i < settingsEmailPanelItem.length; i++) {
            if (settingsEmailPanelItem[i].xtype == "textfield") {
                var Value = settingsEmailPanelItem[i].getValue();
                alert(Value)
            }
        }
        // alert("Save clicked");
        //console.log(Ext.getCmp("emailForm").getForm().findField("newServer").getValue());
    }
}

我为你创建了一个小提琴手,你可以在这里查看。

Fiddle

注意:我看不到ExtJs 2的小提琴工作,所以我在extjs4中看到了。为了在extjs2中工作,你需要给每个文本字段分配唯一的id,然后检索我认为的值。上面的答案适用于ExtJS 4和更高版本。如果你为ExtJS 2做了小提琴,我会尝试更多。

票数 3
EN

Stack Overflow用户

发布于 2016-10-25 21:01:13

只需在每次创建数组时将其添加到数组中,以便稍后在保存按钮处理程序中检索它们:

代码语言:javascript
复制
var textFields = [];    
/*
 *  [...]
 */
buttons: [{
    text: 'Add',
    handler: function () {
        var textField = Ext.create('Ext.form.field.Text', {
            xtype: 'textfield',
            // ...
        });
        textFields.push(textFields);
        settingsEmailPanel.add(textField);
        settingsEmailPanel.doLayout();
    }
},{
    text: 'Save',
    handler: function () {
        for(var i=0; i<textFields.length; i++){
            console.log(textFields[i].getValue());
        }
    }
}]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40240288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档