2013-10-17 104 views
0

我有一個ExtJs(ExtJs 4.2)拆分按鈕,它可以讓我選擇多個選項。每個選項都根據我的業務邏輯重定向。ExtJs拆分按鈕菜單 - 在新選項卡中打開

我的問題是:當我右鍵單擊其中一個選項並單擊打開一個新選項卡時,同一頁面將在新選項卡中打開,並在同一個URL的末尾添加一個「#」。 如何讓這個工作正常?謝謝。

我的ExtJS的代碼 -

Ext.onReady(function() { 
var but = new Ext.FormPanel({ 
    items: [{ 
     xtype: 'splitbutton', 
     text: 'Choose an action', 

     width: 250, 
     scale: 'medium', 
     rowspan: 2, 

     renderTo: Ext.getBody(), 
     margin: '5 15 15 510', 
     border: true, 
     handler: function() { 
      Ext.Msg.alert('<center><br/>Select an option from drop down menu!<center>'); 
     }, 
     menu: [{ 
      text: 'Create Student Record', 
      anchor: '100%', 
      handler: function() { 


       but.getForm().doAction('standardsubmit', { 
        target: '<_s></_s>elf', 
        method: 'POST', 
        standardSubmit: true, 
        formBind: true, 
        url: 'createrecord.jsp' 
       }) 
      } 
     }, { 
      text: 'Create Class Details', 
      anchor: '100%', 
      handler: function() { 


       but.getForm().doAction('standardsubmit', { 
        target: '_self', 
        method: 'POST', 
        standardSubmit: true, 
        formBind: true, 
        url: 'classrecord.jsp' 
       }) 
      } 
     }] 
    }); 

    Ext.create('Ext.Button', { 
     text: 'Logout', 
     margin: '-85 10 10 1200', 
     scale: 'medium', 
     renderTo: Ext.getBody(), 
     handler: function() { 
      but.getForm().doAction('standardsubmit', { 
       target: '_self', 
       method: 'POST', 
       standardSubmit: true, 
       url: 'LogoutServlet' 
      }) 
     } 


    }); 

}); 

回答

1

至於我可以清楚地看到你不能。

在菜單中顯示在新選項卡中打開的原因是該菜單項呈現爲鏈接(<a>),並且瀏覽器負責該行爲。但是你沒有普通的鏈接,但是連接了JS處理程序的鏈接。當您單擊一個默認行爲時,您會使用表單執行一些POST請求。當你點擊'在新選項卡中打開'時,JS將不起作用,你真的無法做任何事情。

你可以做的是使用GET請求,通過在菜單項中提供href而不是POST並擺脫表單。然後它會工作。瞭解。

+0

瞭解。所以我用'href'代替標準提交,它工作得很好。謝謝,感謝你的幫助。 –

相關問題