我想设置一个热键'对于ASP.NET表单中的“保存”按钮。我想使用CTRL + S,但它似乎是默认的Save'热键'对于Windows。有没有办法用我自己的实现覆盖它?
答案 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>
应该这样做......