【发布时间】:2013-09-09 19:30:09
【问题描述】:
所以我知道这听起来像是重复的,但事实并非如此(或者,如果是,我能找到的所有答案都无法按照我需要的方式工作)。问题是这样的:
我正在使用 jQuery 在 HTML5 中编写,我需要制作一个网格,允许通过控制和移位进行多选。我有这个逻辑工作,但每当您按住 shift 键单击时,它都会选择网格中的文本。我想阻止这种选择,但这是这个问题与我发现的其他问题之间的关键区别:我希望选择文本在所有其他时间都有效。
重申:我想使用 shift WITHOUT 禁用文本选择,禁用指定元素的所有文本选择。有谁知道我该怎么做?
-- 编辑--
以下(在网格的构造函数中)为我解决了这个问题。正如回答者建议的那样,我声明了一个不可选择的类。
this.gridBody = $("#userGrid");
var handleKeydown = function(e)
{
e = e || window.event;
var keyPressed = e.keyCode || e.which;
if (keyPressed == keys.shift) {
e.data.gridBody.addClass("unselectable");
}
};
var handleKeyup = function(e)
{
e = e || window.event;
var keyPressed = e.keyCode || e.which;
if (keyPressed == keys.shift) {
e.data.gridBody.removeClass("unselectable");
}
};
$(document).on('keydown', this, handleKeydown);
$(document).on('keyup', this, handleKeyup);
【问题讨论】:
-
可能重复here
-
当我明确说明为什么这不是重复时,您没有阅读我上面的声明吗?
-
stackoverflow.com/a/54101500/2708249 在这里查看我的答案。
-
@RubanrajRavichandran 这是一个非常简洁的答案,但是您正在禁用所有轮班元素的选择,而我有兴趣禁用特定元素的选择。
标签: javascript jquery html css shift