Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 如何从Ext窗口文本字段获取用户输入值?_Extjs - Fatal编程技术网

Extjs 如何从Ext窗口文本字段获取用户输入值?

Extjs 如何从Ext窗口文本字段获取用户输入值?,extjs,Extjs,我有一个用Extjs设计的带有按钮的网页。当用户单击其中一个按钮时,会出现一个窗口,其中包含一个文本字段和一个下一步按钮。单击“下一步”按钮将加载另一个包含字段集的窗口,隐藏第一个字段集。第二种形式的字段集数量将根据第一个窗口中的用户输入进行调整。我正在尝试使用for循环来实现这一点。 我使用的代码如下所示: var win1, win 2, j; var win1items = new Ext.form.FormPanel({ //snip items: [{

我有一个用Extjs设计的带有按钮的网页。当用户单击其中一个按钮时,会出现一个窗口,其中包含一个文本字段和一个下一步按钮。单击“下一步”按钮将加载另一个包含字段集的窗口,隐藏第一个字段集。第二种形式的字段集数量将根据第一个窗口中的用户输入进行调整。我正在尝试使用for循环来实现这一点。 我使用的代码如下所示:

var win1, win 2, j;

var win1items = new Ext.form.FormPanel({
    //snip
    items: [{
        xtype: 'fieldset',
        defaultType: 'textfield',
        items: [{
            fieldLabel: 'Number',
            allowBlank: false,
            name: 'Number',
            width: 110,
            cls:"txtfield"
        }]
    }],
    buttons: [{
        text: 'Next',
        handler: function(){
            if(!win2){
                winc2 = new Ext.Window({
                    //snip
                    items: [win2items]
                });
            }

            win2.show(this);
            win1.hide();
        }
    }]
});

j = Ext.getCmp('win1').getForm().findField("Number").getValue();
var fldComs = [];

for (i=0; i<=j; i++){
    fldComs[i] =  new  Ext.form.FieldSet({
        //snip
        items: [{
        //snip
        }]
    });
}

win2items = new Ext.form.FormPanel({
    //snip
    items: [fldComs]
});

Ext.onReady(function(){
    new Ext.Toolbar({
        renderTo: document.body,
        items: [{
            xtype: 'tbbutton',
            text: 'Start Here',
            cls: 'menu-icon',
            handler: function(){
                if(!win1){
                    win1 = new Ext.Window({
                        //snip
                        items: [win1items]
                    });
                }
                win1.show(this);
            }
        }]
    });
});
var-win1,win2,j;
var win1items=new Ext.form.FormPanel({
//剪断
项目:[{
xtype:“字段集”,
defaultType:'textfield',
项目:[{
fieldLabel:'编号',
allowBlank:false,
姓名:'号码',
宽度:110,
cls:“txtfield”
}]
}],
按钮:[{
文本:“下一个”,
处理程序:函数(){
如果(!win2){
winc2=新的外部窗口({
//剪断
项目:[win2items]
});
}
win2.show(这个);
win1.hide();
}
}]
});
j=Ext.getCmp('win1').getForm().findField(“Number”).getValue();
var fldComs=[];

对于(i=0;i您的代码充满了它不起作用的原因-我并不想表现得刻薄,但从故障排除的角度来看,我很难说出真正的问题在哪里,因为有这么多的猜测工作-我看到了:

1) 您对Ext.getCmp('win1')的调用失败,因为没有id为'win1'的内容-请尝试:

    var win1items = new Ext.form.FormPanel({
        id: 'win1'
        ...
2) 如果您想让“win1”的id位于处理程序中创建的窗口上,则需要在该窗口中指定,但正如MMT所指出的,Ext.window没有getForm()方法(因此我怀疑这是您想要做的)

3) 如果需要该文本字段的值,只需使用简单的方法并为该字段提供一个ID:

[{
    label: 'Number',
    xtype: 'textfield',
    id: 'MyNumberField'
}]
... 
var j = Ext.getCmp('MyNumberField').getValue();
getCmp()接受id作为参数而不是变量。要解决此问题,请为表单面板提供id,并将该id包含在getCmp()内的引号中

这可能会解决问题,但不管怎样,您的代码是非常不可读的,正如phat skat正确指出的那样

getForm()
Ext.FormPanel
的方法,而不是
Ext.Window
我只将getForm()用于表单面板。此表单是在我的第一个窗口中定义的。