Javascript ExtJS - 表单提交

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11942742/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 07:46:21  来源:igfitidea点击:

ExtJS - Form submit

javascriptformsextjssubmit

提问by michail_w

I've got code:

我有代码:

win = desktop.createWindow({
    id: 'admin-win',
    title: 'Add administration users',
    width: 740,
    height: 480,
    iconCls: 'icon-grid',
    animCollapse: false,
    constrainHeader: true,
    xtype: 'form',
    bodyPadding: 15,
    url: 'save-form.php',
    items: [{
        xtype: 'textfield',
        fieldLabel: 'Field',
        name: 'theField'
    }],

    buttons: [{
        text: 'Submit',
        handler: function () {
            var form = this.up('form').getForm();
            if (form.isValid()) {
                form.submit({
                    success: function (form, action) {
                        Ext.Msg.alert('Success', action.result.message);
                    },
                    failure: function (form, action) {
                        Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response');
                    }
                });
            }
        }
    }]
});

And buttons doesn't work. It creates error - this.up('form') is undefined. How can I call getForm() in such code like that?

按钮不起作用。它会产生错误 - this.up('form') 未定义。我如何在这样的代码中调用 getForm() ?

UPDATE: Thanks for really quick reply! I modified your code for my needs, this is it, and it works with Desktop Example:

更新:感谢您的快速回复!我根据我的需要修改了您的代码,就是这样,它适用于桌面示例:

win = desktop.createWindow({
    id: 'admin-win',
    title: 'Add administration users',
    width: 740,
    iconCls: 'icon-grid',
    animCollapse: false,
    constrainHeader: true,
    items: [{
        xtype: 'form',
        bodyPadding: 15,
        url: 'save-form.php',
        items: [{
            xtype: 'textfield',
            fieldLabel: 'Field',
            name: 'theField'
        }],

        buttons: [{
            text: 'Submit',
            handler: function () {
                var form = this.up('form').getForm();
                if (form.isValid()) {
                    this.up().up().submit({
                        success: function (form, action) {
                            Ext.Msg.alert('Success', action.result.message);
                        },
                        failure: function (form, action) {
                            Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response');
                        }
                    });
                }
            }
        }]
    }]
});

采纳答案by davidbuzatto

As I already said, it seems that you have problems with your code. You are passing Ext.form.Panel options to a Ext.window.Window (I assuming this because the name of the method that you are calling). I'm writing an example with a window for you. Just a moment.

正如我已经说过的,您的代码似乎有问题。您将 Ext.form.Panel 选项传递给 Ext.window.Window (我假设这是因为您正在调用的方法的名称)。我正在为您编写一个带有窗口的示例。一会儿。

It is ready. Take a look:

它准备好了。看一看:

Ext.create('Ext.window.Window', {
    title: 'This is a Window with a Form',
    height: 200,
    width: 400,
    layout: 'fit',
    items: [{  // the form is an item of the window
        id: 'admin-win',
        title: 'Add administration users',
        width: 740,
        height: 480,
        iconCls: 'icon-grid',
        animCollapse: false,
        constrainHeader: true,
        xtype: 'form',
        bodyPadding: 15,
        url: 'save-form.php',
        items: [{
            xtype: 'textfield',
            fieldLabel: 'Field',
            name: 'theField',
            allowBlank: false
        }],
        buttons: [{
            text: 'Submit',
            handler: function() {
                var form = this.up('form').getForm();
                if (form.isValid()) {
                    form.submit({
                        success: function(form, action) {
                           Ext.Msg.alert('Success', action.result.message);
                        },
                        failure: function(form, action) {
                            Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response');
                        }
                    });
                } else {
                    Ext.Msg.alert( "Error!", "Your form is invalid!" );
                }
            }
        }]
    }]
}).show();

jsFiddle: http://jsfiddle.net/davidbuzatto/vWmmD/

jsFiddle:http: //jsfiddle.net/davidbuzatto/vWmmD/