2016-01-29 25 views
0

我在一个保存按钮上保存了三个选项卡,但是当点击保存按钮时,我试图禁用该按钮,同时将数据保存在三个选项卡中以防止用户在保存按钮上点击几次,因为我的功能超时。任何帮助如何做到这一点?在extjs4.2保存后禁用按钮

Ext.onReady(function(){ 



    tabPanel = Ext.create('Ext.tab.Panel', { 
     region: 'center', 
     activeTab: 0, 
     autoScroll: true, 
     tbar: [{ 
      xtype: 'button', 
      deferredRender : false, 
      handler:function(){ 
      save("frm_A", save); 
      },  


     }], 
     items: [ 
       { 
        id:"panel_A", 
        html: "<iframe src= '"+A_url +"' width='100%' height='100%' id='frm_A' name='frm_A' frameborder=0 />",   
       },{ 
        id:"panel_B", 
        html: "<iframe src='"+B_url+"' width='100%' height='100%' id='frm_B' name='frm_B' frameborder=0 />", 

       },{ 
        id:"panel_C", 
        html: "<iframe src= '"+C_url+"' width='100%' height='100%' id='frm_C' name='frm_C' frameborder=0 />", 
       }] 

     }); 


    viewport = new Ext.Viewport({ 
     layout:'border', 
     items:[tabPanel] 
    }); 



    function save(record){ 

     var Aid = record.getField("NUMBER").getRealValue(); 
     var currentTab = tabPanel.getActiveTab(); 
       tabPanel.setActiveTab(1); 
       tabPanel.setActiveTab(2); 
       tabPanel.setActiveTab(0); 
       tabPanel.setActiveTab(currentTab); 

     var B= window.frames["frm_B"]; 
     var C= window.frames["frm_C"]; 

     setTimeout(function(){ 
      try { 
      B.RECORD.getField("ID").setRealValue(Aid); 
      C.RECORD.getField("ID").setRealValue(Aid); 
      B.RECORD.update(); 
      C.RECORD.update(); 

      parent.refreshGrid(); 
      parent.win.close(); 
     } 
     catch(e){ 
      showError(e); 
     } 
     }, 4000); 

    } 


}); 

回答

2

保存处理程序中的一种方法是调用按钮的setDisabled()方法。

例子:

handler: function() { 
    this.setDisabled(true); 
    save("frm_A", save); 
} 

然后,你的setTimeout里面,你可以setDisabled(假)。

为了能够有效地做到这一点,您可能需要考虑重构一下保存处理程序,例如,将“this”作为参数传递给您的保存函数,以便您可以调用setDisabled(false)参数。

https://docs.sencha.com/extjs/4.2.5/#!/api/Ext.button.Button-method-setDisabled

希望有所帮助。