CSS或Javascript禁用从CTRL + A突出显示文本

时间:2013-05-23 23:33:17

标签: javascript css html5 events

注意:此问题与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;
            }
        }
    }
});

2 个答案:

答案 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属性来停止该行为