注意:这个问题不同于How to disable text selection highlighting using CSS?
在提问之前,我阅读了上述问题的讨论历史。一切正常,除了我可以允许 CTRL+A
(全选)仅在输入元素内工作。
那是因为我在桌面上部署我的 HTML5 应用程序,我希望 GUI/Forms 应用程序具有相同的行为。
起点是什么?尝试使用 keypress
事件绑定(bind)所有元素并观察 CTRL + A 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是您正在寻找的答案。
65 是 ascii 表示“A”,97 表示“a”,如果您想同时考虑这两者的话。
$(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. .试试这个简单的 hack 而不是 disableSelection()。将 objEvent.disableTextSelect();
替换为上面的 objEvent.preventDefault();
。
编辑 4:让它更干净一些。
关于javascript - CSS 或 Javascript 禁用 CTRL + A 中的文本选择突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725566/