参考http://jshotkeys.googlepages.com/test-static-01.html 我尝试实现这个强大的工具并面临一些问题。
每当我点击Ctrl S时,它会弹出一个窗口提示,询问我是否要保存我的testing.html
我想忽略Windows提示符。
我想要的很简单: 1.当人们点击保存按钮/使用键盘上的快捷键ctrl s
脚本需要进行Create()检查
如果为true,则继续提交表单,如果为false,则停止提醒请输入问题,重点关注txtQuestion,不要再采取任何进一步行动。
以下是完整的源代码供参考: 输入
<html>
<head>
<style>
* {font-family: Helvetica, Verdana, Arial; font-size:0.95em}
.eventNotifier{width: 100px; float: left; color:navy;
border: dotted 1px navy; padding: 4px; background-color:white;
margin:3px}
.dirty{border: solid 1px #0ca2ff; color:white;
background-color:#0ca2ff}
</style>
<script src="jquery-1.3.2.min.js"></script>
<script src="jquery.hotkeys-0.7.9.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
//很奇怪 - 我发现警报Ctrl + S出现两次.. ??? $(window).keypress(function(event){ if((event.which == 115&amp;&amp; event.ctrlKey)){ 警报(“按住Ctrl + S”); event.preventDefault(); } });
jQuery(document).bind('keydown', 'Ctrl+s',
function(evt){ Create(); return false; });
//jQuery(document).bind('keydown', 'Ctrl+s',
//function (evt){jQuery('#_Ctrl_s'); return false; });
});
function Create()
{
var f = document.frm
if (f.txtQuestion.value.length == 0)
{
alert('Please enter Question.')
f.txtQuestion.focus()
return false
}
f.submit()
}
</script>
</head>
<body>
<form name="frm" method=post action="" >
<div id="_Ctrl_s" class="eventNotifier">Ctrl+s</div>
<input type=text name="txtQuestion" maxlength="255"
class="field400" value="">
<input type=button value="Save" name="BtnSave" onclick="Create()"
class=text100>
</form>
</body>
</html>
代码
答案 0 :(得分:3)
为避免显示浏览器“另存为”对话框,您必须阻止默认事件操作,例如普通jQuery:
$(window).keypress(function(event) {
if ((event.which == 115 && event.ctrlKey)){
alert("Ctrl+S pressed");
event.preventDefault();
}
});
答案 1 :(得分:2)
您的代码段没问题但是为了防止默认浏览器操作(如显示“保存”对话框),您必须捕获 KeyPress 事件(而不是KeyDown),当然返回false 强>
jQuery(document).bind('keypress', 'Ctrl+S',function (evt){
//do job..
return false
});