2016-01-29 2 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 (ложь).

Для того чтобы сделать это эффективно, вы можете захотеть реорганизовать обработчик сохранения немного, например, передав «это» в качестве параметра вашей функции сохранения, чтобы вы могли вызвать setDisabled (false) на этом параметр.

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

Надежда, что помогает.

Смежные вопросы