我已经编写了一个代码块来阻止按键Ctrl + s
它工作正常,并且在事件运行时已经发出警报,告诉我代码块已成功运行。稍后此代码块将被save命令替换。
但是我第一次按下Ctrl + s
时遇到了一些麻烦但是每次都有s
按钮触发事件
这是代码块:
var isCtrl = false;
ck.on('contentDom', function (evt) {
ck.document.on('keyup', function (event) {
if (event.data.$.keyCode === 17) isCtrl = false;
});
ck.document.on('keydown', function (event) {
if (event.data.$.keyCode === 17) isCtrl = true;
if (event.data.$.keyCode === 83 && isCtrl === true) {
//The preventDefault() call prevents the browser's save popup to appear.
//The try statement fixes a weird IE error.
try {
event.data.$.preventDefault();
} catch (err) { }
alert('ctrl-s');
return false;
}
});
}, ck.element.$);
}
非常感谢任何帮助。
答案 0 :(得分:1)
这是一种在jquery中执行ctrl + s命令的方法,每次都有效:
$(window).keypress(function(event) {
if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true;
alert("Ctrl-S pressed");
event.preventDefault();
return false;
});
答案 1 :(得分:1)
这篇帖子适合那些也遇到过这个问题的人,我现在已经解决了。我的原始代码块的问题是,一旦isCtrl
设置为true,它仍然是真的。这意味着当再次来检查它是否被按下时,它是否被再次按下并不重要,因为它已经设置为真。因为我已经添加了一行来在条件语句运行时将其更改为false。
这是新的代码块:
var isCtrl = false;
ck.on('contentDom', function (evt) {
ck.document.on('keyup', function (event) {
if (event.data.$.keyCode === 17) isCtrl = false;
});
ck.document.on('keydown', function (event) {
if (event.data.$.keyCode == 17) isCtrl = true;
if (event.data.$.keyCode == 83 && isCtrl === true) {
//The preventDefault() call prevents the browser's save popup to appear.
//The try statement fixes a weird IE error.
try {
event.data.$.preventDefault();
} catch (err) { }
alert('ctrl-s');
isCtrl = false;
return false;
}
});
}, ck.element.$);
}