表格未在Window上提交

时间:2017-07-11 22:07:26

标签: extjs

我使用以下代码创建一个带有表单的窗口:

    var confirm = new Ext.Window({
                      //xtype: 'form',
                      hidden: true,
                      id: 'FrmModalWindow',
                      autodestroy: true,
                      layout: 'auto',
                      bodyPadding: 10,
                      items: [
                        //
                        {xtype: 'form',
                        id: 'FrmModalConfirma',
                         autodestroy: true,
                        layout: 'auto',
                        bodyPadding: 10,
                        items: [
                          {
                            xtype: 'displayfield',
                            fieldLabel: 'Esta seguro que desea guardar los cambios y recalcular la categoría?',
                            labelWidth: 500
                          },
                          {
                            xtype: 'combobox',
                            width: 500,
                            name: 'id_motivo_modificacion',
                            allowBlank: false,
                            fieldLabel: 'Motivo de los cambios',
                            labelWidth: 150,
                            store: 'MotivoStore',
                            displayField: 'descripcion_motivo_modificacion',
                            valueField: 'id_motivo_modificacion'

                          },
                          {
                            xtype: 'textareafield',
                            width: 500,
                            name: 'observacion',
                            fieldLabel: 'Observaciones',
                            labelWidth: 150
                          },
                          {
                            xtype: 'textfield',
                            anchor: '100%',
                            itemId: 'hiddenFieldCedulaGeneral',
                            fieldLabel: 'Label',
                            name: 'cedula_estudiante',
                            hidden: true,
                            emptyText: cedulaGeneral.getValue()
                          },
                          {
                            xtype: 'textfield',
                            anchor: '100%',
                            itemId: 'hiddenFieldEstado',
                            fieldLabel: 'Label',
                            name: 'cod_estado',
                            hidden: true,
                            emptyText: 'MPA'
                          },
                          {
                          xtype: 'container',
                          layout: 'column',
                          items: [
                            {
                              xtype: 'button',
                              text: 'Si, recalcular',
                              listeners: {
                                click: function(){

        /*********************************************
        ************* SUBMIT THE FORM ****************
        *********************************************/

        var formaGeneral = Ext.ComponentQuery.query("#FrmModalConfirma")[0];
        console.log(formaGeneral);
        if(formaGeneral.isValid()){
          formaGeneral.submit(
            {
              url: '../servidor/sbs/informaciongeneral/duplicaultimoingreso',
              success: function(response, opts){
                console.log("Se duplicó con éxito");
              },
              failure: function(response,opts){
                console.log("Error al duplicar");
              }
            });
        }

        /********************************************
        ************** DO A LOT OF OTHER STUFF ******
        ********************************************/



                                //CLOSE AFTER SAVING
                                  var ventana = Ext.ComponentQuery.query("#FrmModalWindow")[0];
                                  ventana.destroy();
/************************************************
If I change ventana.destroy() to ventana.hide(), the form does submit
*************************************************/
                                }
                              }
                            },
                            {
                              xtype: 'tbspacer',
                              width: 30
                            },
                            {
                              xtype: 'button',
                              text: 'No, cancelar',
                              listeners: {
                                click: function(){
                                  //Cierra la ventana
                                  var ventana = Ext.ComponentQuery.query("#FrmModalWindow")[0];
                                  ventana.destroy();
/************************************************
If I change ventana.destroy() to ventana.hide(), the form does submit
*************************************************/
                                }
                              }
                            }
                        ]
                        }
                          ]
                        }
                      ]
                    });

    confirm.show();

因此,如果我将代码保留为ventana.destroy(),则创建的表单永远不会被提交,如果我将其更改为ventana.hide()表单已提交,但如果用户保留,则会创建窗口的多个副本使用调用该窗口的选项。我不明白为什么在使用ventana.destroy();

时找不到表单

1 个答案:

答案 0 :(得分:3)

提交调用是异步的,如果你立即将其销毁,它永远不会命中服务器。

您可以做的是立即隐藏表单,然后在成功/失败回调中将其销毁。