2

我试图让我在 ASP.Net 中的 gridview 控件根据用户在尝试通过单击列名进行排序时是否按下 Ctrl 键来进行多重排序。问题是,当我使用 Firefox 时,如果我在按下 Ctrl 键的情况下单击列名,浏览器会尝试在新选项卡中打开“javascript:__doPostBack('ctl00$ContentPla...”链接。IE 和 Chrome 都有除非链接是真正的链接,否则不要这样做。

有没有办法可以阻止 Firefox 在新标签页中打开链接并仍然导致页面正常回发?

谢谢。

4

1 回答 1

1

您需要使用 document.onKeyDown 捕获按下 Ctrl 键的事件。

在您的事件处理程序中,检查是否按下了“Ctrl”(键码 17),如下所示:

function document_keyDown(e) {
    var KeyID = (window.event) ? event.keyCode : e.keyCode;
        if (KeyID == 17) { 
            ctrlDown = true;
        }
}

在这里,我将“ctrlDown”变量设置为 true。

对于 onKeyUp 事件,您可以完全相反:

function document_keyUp(e) {
    var KeyID = (window.event) ? event.keyCode : e.keyCode;
    if (KeyID == 17) { 
       ctrlDown = false;
    }
}

然后,在您的列元素的单击事件中,您可以检查 Ctrl 是否已被单击:

function columnElement_click() {
    if (ctrlDown != undefined && ctrlDown == true)
        alert("Ctrl + Click Received");
    return false;
}

确保您的列单击处理程序返回 false。否则,浏览器将执行代码,然后导航到链接的“href”属性中的地址。

希望这可以帮助。

(另见:http ://www.geekpedia.com/tutorial138_Get-key-press-event-using-JavaScript.html )

于 2010-01-12T02:52:36.250 回答