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

Rag*_*azs 4 javascript css events html5

注意:这个问题与如何使用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;
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

kus*_*yar 5

可能重复.

如果您被允许使用jquery,是您正在寻找的答案.

如果您想要同时考虑两者,则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();
                    }
                }
            }        
    });
});   
Run Code Online (Sandbox Code Playgroud)

编辑:根据您的评论进行修改以允许输入.

编辑2:如果你包含jQuery UI,你可以使用disableSelection()而不是disableTextSelect(),否则试试这个.

编辑3:抱歉,在jQuery 1.9中不推荐使用disableSelection(),请参见此处..尝试这个简单的hack而不是disableSelection().objEvent.disableTextSelect();objEvent.preventDefault();以上代替 .

编辑4:使它更清洁.