注意:这个问题与How to disable text selection highlighting using CSS?不同
在问之前,我从上面的问题中阅读了讨论历史。一切正常,除了我可以允许CTRL+A
(全选)仅在输入要素内部起作用。
那是因为我将HTML5应用程序部署在桌面上,并且希望GUI / Forms应用程序具有相同的行为。
起点是什么?尝试使用keypress
事件绑定(bind)所有元素,并观察CTRL + keyCode
吗?这种方法的缺点是必须控制所有内容并注意重新渲染。
我更喜欢CSS解决方案,但是欢迎任何想法。
提前致谢。
@EDIT:我找到了这个麻烦的解决方案,但是可以正常工作:
$(document).keydown(function(objEvent) {
if (objEvent.ctrlKey) {
if ((objEvent.keyCode === 65) || (objEvent.keyCode == 97)) {
if ($(objEvent.target).not("input").disableTextSelect().length) {
return false;
}
}
}
});
最佳答案
可能重复。
如果允许使用jquery,here是您要寻找的答案。
如果您想同时考虑这两个因素,则“A”为65,“a”为97。
$(function(){
$(document).keydown(function(objEvent) {
if (objEvent.ctrlKey) {
if ($(objEvent.target).not('input')){
if (objEvent.keyCode == 65 || objEvent.keyCode == 97) {
objEvent.preventDefault();
}
}
}
});
});
编辑:根据您的评论进行修改以允许输入。
编辑2:如果您包含jQuery UI,则可以使用disableSelection()代替disableTextSelect()
否则尝试this.
编辑3:对不起,在jQuery 1.9中不推荐使用disableSelection(),请参见here.。试试这个简单的技巧,而不是disableSelection()。用上面的
objEvent.disableTextSelect();
替换objEvent.preventDefault();
。编辑4:使其更清洁。