注意:这个问题与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:使其更清洁。

10-06 07:40