2013-10-17 63 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'代替标准提交,它工作得很好。谢谢,感谢你的帮助。 –

相关问题