如何将CTRL + S或ALT + S设置为ASP.NET中的热键组合?

时间:2014-07-09 10:13:00

标签: asp.net webforms

我想设置一个热键'对于ASP.NET表单中的“保存”按钮。我想使用CTRL + S,但它似乎是默认的Save'热键'对于Windows。有没有办法用我自己的实现覆盖它?

1 个答案:

答案 0 :(得分:3)

这在HTML / JS中非常有用。你需要为你想要的元素分配一个事件处理程序" catch"热键,或只是整个文件的事件。

如果您使用onkeydown事件,则可以绕过大多数浏览器中的默认保存提示对话框(至少IE,Chrome,FF)。例如,我无法使用keypress事件执行此操作。因此,请务必使用onkeydown事件!

示例:

document.onkeydown = function(event)
{
    if (event.ctrlKey && event.keyCode == 83)
    {
        alert('You just pressed CTRL+S');
        // Do stuff here
    }
};

下一步是在用户按下CTRL-S时执行您要执行的实际操作。假设这是一个带回发的标准ASP.NET Web表单,您可以通过编程方式发布表单。

有多种方法可以做到这一点,这可能是最简单的(假设文档只有一个表单!):

document.forms[0].submit();

所以整个片段基本上都是:

document.onkeydown = function(event)
{
    if (event.ctrlKey && event.keyCode == 83)
    {
        document.forms[0].submit();
    }
};

编辑:对于多个按钮,不只是单个表单提交,请尝试以下操作:

让我们说你有这些asp:按钮:

<asp:button runat="server" id="btnSaveSubmit" onclick="btnSaveSubmit_click" Text="Save and submit" />
<asp:button runat="server" id="btnSaveHold" onclick="btnSaveHold_click" Text="Save and hold" />

然后你的javascript会是这样的(注意,我假设你现在正在使用jQuery):

<script>
$(function() {
document.onkeydown = function(event)
{
    if (event.ctrlKey && event.keyCode == 83) //CTRL+S
    {
        // Just emulate a button click on the save and submit button by
        // using jQuery to find the button based on it's clientID
        $('#<%=btnSaveSubmit.ClientID%>').click();
    }

    if (event.ctrlKey && event.keyCode == 72) //CTRL+H
    {
        // Just emulate a button click on the save and hold button by
        // using jQuery to find the button based on it's clientID
        $('#<%=btnSaveHold.ClientID%>').click();
    }
};
});
</script>

应该这样做......