4

注意:这个问题不同于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;
            }
        }
    }
});
4

2 回答 2

5

可能重复。

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

65 是 'A' 的 ascii 和 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() 否则试试这个。

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

编辑4:让它更干净一点。

于 2013-05-23T23:42:21.990 回答
-1
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;

使用上述 CSS 属性来阻止该行为。

于 2013-05-23T23:37:08.400 回答