0

我有一个 ExtJs (ExtJs 4.2) 拆分按钮,它会下拉给我几个选项供我选择。每个选项都根据我的业务逻辑重定向。

我的问题是:当我右键单击其中一个选项并单击在新选项卡中打开时,会在新选项卡中打开同一页面,并在同一 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'
            })
        }


    });

});
4

1 回答 1

1

据我所知,你实际上不能。

在菜单中显示在新选项卡中打开的原因是菜单项被呈现为链接(<a>)并且浏览器负责该行为。但是您没有普通链接,而是附加了 JS 处理程序的链接。当您单击一个默认行为时,您会使用表单进行一些 POST 请求。当您单击“在新选项卡中打开”时,JS 将不起作用,您真的无能为力。

您可以做的是通过href在菜单项中提供而不是 POST 来使用 GET 请求并摆脱表单。然后它会工作。

于 2013-10-18T10:05:46.087 回答