注意:此问题与How to disable text selection highlighting using CSS?
不同在问我之前,我从上面的问题中阅读了讨论历史。一切正常,但我可以允许CTRL+A
(全选)仅适用于输入元素。
那是因为我正在桌面上部署我的HTML5应用程序,我希望从GUI / Forms应用程序中获得相同的行为。
起点是什么?尝试使用keypress
事件绑定所有元素并观察CTRL + A keyCode
?这种方法的缺点是必须控制一切并注意重新渲染。
我更喜欢CSS解决方案,但欢迎任何想法。
提前致谢。
@EDIT:我找到了这个ulgy解决方案,但正在工作:
$(document).keydown(function(objEvent) {
if (objEvent.ctrlKey) {
if ((objEvent.keyCode === 65) || (objEvent.keyCode == 97)) {
if ($(objEvent.target).not("input").disableTextSelect().length) {
return false;
}
}
}
});
答案 0 :(得分:5)
可能重复。
如果您被允许使用jquery,here就是您正在寻找的答案。
如果你想同时考虑两者,65是'A'的ascii和'a'的ascii。
$(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:使它更清洁。
答案 1 :(得分:-3)
user-select:none;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
使用这些CSS属性来停止该行为