【问题标题】:Getting the form to submit when clicking the submit button单击提交按钮时获取要提交的表单
【发布时间】:2011-08-15 17:16:35
【问题描述】:

我试图在单击按钮时提交表单,但这并不像我想象的那么简单,我总是得到一个 fp.getForm 不是一个函数,虽然提交处理程序直接取自 ExtJs 文档,有什么线索吗?

Players.panel.Subscription = function(config) {
    config = config || {};
    Ext.apply(config,{
        border: false
        ,baseCls: 'modx-formpanel'
        ,process: 'mgr/player/getSubscribers'
        ,standardSubmit: true
        ,url: Players.config.connectorUrl
        ,baseParams: { action: 'mgr/player/getSubscribers' }
        ,buttons: [{
                    text: 'Export er'
                    ,formBind: true
                    ,type: 'submit'
                    ,handler: function(){


                            var fp = this.ownerCt.ownerCt,
                                form = fp.getForm();
                            if (form.isValid()) {
                                // check if there are baseParams and if
                                // hiddent items have been added already
                                if (fp.baseParams && !fp.paramsAdded) {
                                    // add hidden items for all baseParams
                                    for (i in fp.baseParams) {
                                        fp.add({
                                            xtype: 'hidden',
                                            name: i,
                                            value: fp.baseParams[i]
                                        });
                                    }
                                    fp.doLayout();
                                    // set a custom flag to prevent re-adding
                                    fp.paramsAdded = true;
                                }
                                form.submit();
                            }

                }
                }]

    });
    Players.panel.Subscription.superclass.constructor.call(this,config);

};

我还尝试将基类从 modx-formpanel 替换为 formpanelbasicform,但没有成功。

谢谢

【问题讨论】:

    标签: extjs modx


    【解决方案1】:

    这是因为您没有表单面板。试试这个:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="stylesheet" type="text/css" href="./ext/resources/css/ext-all.css" />
    <script type="text/javascript" src="./ext/bootstrap.js"></script>
    </head>
    <body>
    <script>
    Ext.ns('Players.panel');
    Ext.onReady(function() {  
      Players.panel.Subscription = Ext.extend(Ext.form.Panel, {
        constructor : function(config) {
          config = Ext.apply({
              border: false
                ,baseCls: 'modx-formpanel'
                ,process: 'mgr/player/getSubscribers'
                ,standardSubmit: true
                ,url: '-'
                ,baseParams: { action: 'mgr/player/getSubscribers' }
                ,buttons: [{
                            text: 'Export er'
                            ,formBind: true
                            ,type: 'submit'
                            ,handler: function(){
    
    
                                    var fp = this.ownerCt.ownerCt,
                                        form = fp.getForm();
                                    if (form.isValid()) {
                                        // check if there are baseParams and if
                                        // hiddent items have been added already
                                        if (fp.baseParams && !fp.paramsAdded) {
                                            // add hidden items for all baseParams
                                            for (i in fp.baseParams) {
                                                fp.add({
                                                    xtype: 'hidden',
                                                    name: i,
                                                    value: fp.baseParams[i]
                                                });
                                            }
                                            fp.doLayout();
                                            // set a custom flag to prevent re-adding
                                            fp.paramsAdded = true;
                                        }
                                        form.submit();
                                    }
    
                        }
                        }]
           }, config);
            Players.panel.Subscription.superclass.constructor.call(this,config);
        }
      });
    
      var f = Ext.create(Players.panel.Subscription, {id:'formPanel', renderTo: Ext.getBody()});;
    });
    </script>
    </body>
    </html>
    

    【讨论】:

    • 得到 cls 未定义 [中断此错误] cls.xtype = xtype; I is undefined [Break On This Error] window.undefined=window.undefined;Ext=...window.attachEvent("onunload",a)}})();
    • 我更新了我的代码(添加完整版)。尝试一下。它对我有用。
    • 当然,您必须将 url 更改为可存在的。
    • 感谢您的帮助,但由于某种原因,我忽略了 url 参数并且页面被提交给了自己
    • 你能添加你的完整代码吗?用 Players.config.connectorUrl 定义。经过我推荐的修改。
    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多