【问题标题】:extjs4: how to submit the same form data twiceextjs4:如何两次提交相同的表单数据
【发布时间】:2014-11-25 20:58:13
【问题描述】:

我有一个带有 2 个按钮的输入表单,提交和保存。最初,这两个按钮都将被禁用。一旦用户输入数据,提交按钮将被启用并提交表单,该表单进入 servlet 进行验证(通过验证,我的意思是我发送用户 ID 和密码以检查它是否存在于数据库中)

这是我的提交按钮处理程序:

validateForm: function(button){
        console.log('Validatingform');
        var formData=button.up('form').getForm();
        if(formData.isValid()){
            Ext.Ajax.request({
                url : 'MyServlet',
                params : {
                    inputData:Ext.encode(formData.getValues()),
                    validate:"valid"
                },
                scope : this,
                success : this.onValid,
                failure : this.onInvalid
            });
        }
    },

onValid: function(response,button){
        console.log("Valid");
        //on valid-enable save button,disable submit button
        Ext.getCmp('myFormSubmit').setDisabled(true);
        Ext.getCmp('myFormSave').enable();

    },

检查验证后。在 OnValid 方法中,我启用了保存按钮并单击保存按钮以保存表单数据。

但是由于表单已经提交,所以我的 servlet 的输入是 "null"

我不确定如何保存用户输入的此表单数据以进行多次提交。谁能指导我解决这个问题。

提前致谢

【问题讨论】:

  • 您是否在用户点击“提交”按钮后禁用表单项?
  • 不..我只是禁用了提交按钮

标签: javascript forms servlets extjs extjs4


【解决方案1】:

将数据保存在按钮/表单上是否合适?可能不是最好的主意,但这是一个想法

    validateForm: function(button){
    console.log('Validatingform');
    var formData=button.up('form').getForm();
    if(formData.isValid()){
        //
        if (!button.savedData){
            button.savedData = formdata;    
        }

        //
        Ext.Ajax.request({
            url : 'MyServlet',
            params : {
                inputData:Ext.encode(formData.getValues()),
                validate:"valid"
            },
            scope : this,
            success : this.onValid,
            failure : this.onInvalid
        });
    }
},

onValid: function(response,button){
    console.log("Valid");
    var submitBtn = Ext.getCmp('myFormSubmit');
//on valid-enable save button,disable submit button
    submitBtn.setDisabled(true);
    Ext.getCmp('myFormSave').enable();
    if (submitBtn && submitBtn.savedData){
        formdata = submitBtn.savedData;
        delete submitBtn.savedData;
   }
//
},

onInvalid: function(response,button){
    var submitBtn = Ext.getCmp('myFormSubmit');
    if (submitBtn && submitBtn.savedData){
        formdata = submitBtn.savedData;
        delete submitBtn.savedData;
     }
}

【讨论】:

  • 谢谢..我一定会试试的。如果您能更清楚地讲述您的想法..这将非常有帮助
  • 我发布的代码检查提交按钮是否保存了任何数据,如果没有,则将表单数据保存在按钮的属性 savedData 中(这不是本机属性,但 Ext 允许您添加这些属性);然后,当调用 onValid 函数时,它会获取提交按钮引用并检查该按钮是否具有名为 savedData 的属性。如果是这样,它将从此属性创建一个名为 formData 的新 var,并且此 var 可用于新的提交等。在此之后,它从按钮中删除了该属性,以允许使用不同信息的新提交。
  • onInvalid 也会清除此属性,只是为了确保流中没有旧数据。
  • 好的,非常感谢..我知道了。我现在就试试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 2011-06-17
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 2014-11-03
相关资源
最近更新 更多