2014-10-01 66 views
0

我有一個帶有2個按鈕的輸入表單,提交併保存。最初,這兩個按鈕都將被禁用。一旦用戶輸入數據,提交按鈕將被啓用,他將提交表單,該表單將傳送到servlet進行驗證(通過驗證,我的意思是發送用戶標識和密碼以檢查它是否存在於數據庫中)extjs4:如何提交相同的表單數據兩次

這裏是我的處理程序提交按鈕:

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」

我不確定如何保存用戶輸入的多個提交的表單數據。任何人都可以請指導我解決這個問題。

在此先感謝

+0

你是否禁用用戶點擊「提交」按鈕後的表單項? – Sreek521 2014-10-01 06:45:25

+0

不,我只是禁用提交按鈕 – user777777 2014-10-03 07:37:43

回答

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; 
    } 
} 
+0

謝謝..我會盡力的。如果你能更清楚地告訴你的想法..這將是非常有用的 – user777777 2014-10-17 12:16:01

+1

我發佈的代碼檢查提交按鈕是否保存了任何數據,如果沒有,將formdata保存在按鈕的屬性savedData中(這是不是本地屬性,但Ext允許您添加這些屬性);那麼當onValid函數被調用時,它將獲得提交按鈕引用並檢查該按鈕是否具有名爲savedData的屬性。如果是這樣,它會從這個屬性創建一個名爲formData的新變量,並且這個變量可以用於新的提交等。在此之後,它從該按鈕中刪除了該屬性,以允許提交具有不同信息的新提交。 – 2014-10-17 12:34:28

+0

onInvalid也會清除此屬性,只是爲了確保流中沒有舊數據。 – 2014-10-17 12:35:13