Получение формы для отправки при нажатии кнопки отправки

Я пытаюсь отправить форму при нажатии кнопки, однако это не так просто, как я думал, я всегда получаю 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 на formpanel и basicform.

Спасибо


person Yehia A.Salam    schedule 15.08.2011    source источник


Ответы (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>
person Xupypr MV    schedule 15.08.2011
comment
got cls is undefined [Break On This Error] cls.xtype = xtype; I is undefined [Break On This Error] window.undefined=window.undefined;Ext=...window.attachEvent(onunload,a)}})(); - person Yehia A.Salam; 16.08.2011
comment
Я обновляю свой код (добавляю полную версию). Попробуй это. Меня устраивает. - person Xupypr MV; 16.08.2011
comment
Конечно, вы должны изменить URL-адрес на существующий. - person Xupypr MV; 16.08.2011
comment
спасибо, что помогло, но по какой-то причине параметр URL игнорируется, и страница отправляется самому себе - person Yehia A.Salam; 17.08.2011
comment
Вы можете добавить свой полный код? С определением Players.config.connectorUrl. После модификаций, которые были рекомендованы мной. - person Xupypr MV; 17.08.2011