Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript网格中实现键盘控制_Javascript_Keyboard_Mootools - Fatal编程技术网

在JavaScript网格中实现键盘控制

在JavaScript网格中实现键盘控制,javascript,keyboard,mootools,Javascript,Keyboard,Mootools,我完成了JavaScript网格控件的构建,一切正常。分页、按钮导航、列排序等 网格中的单元格是使用Mootools 1.2.4生成的div(在整个控件中大量使用) 我想为网格实现键盘控制,既可以用于分页(向上翻页/向下翻页),也可以使用箭头键在网格的行/单元格内移动。 我认为我必须在网格的每个单元格上附加一个事件处理程序,并检测正在按下的键,以便采取适当的操作。但是,我不能把焦点放在细胞上 我错过了什么?我该怎么做?非常感谢您的帮助。您可以通过在非表单元素中添加tabindex来进行一项可能的

我完成了JavaScript网格控件的构建,一切正常。分页、按钮导航、列排序等

网格中的单元格是使用Mootools 1.2.4生成的div(在整个控件中大量使用)

我想为网格实现键盘控制,既可以用于分页(向上翻页/向下翻页),也可以使用箭头键在网格的行/单元格内移动。 我认为我必须在网格的每个单元格上附加一个事件处理程序,并检测正在按下的键,以便采取适当的操作。但是,我不能把焦点放在细胞上


我错过了什么?我该怎么做?非常感谢您的帮助。

您可以通过在非表单元素中添加tabindex来进行一项可能的攻击,它将允许您形成焦点、模糊和侦听器等事件

下面是一个例子:

不知道它有多跨浏览器

$$("div").each(function(el, i) {
    el.set("tabindex", i).addEvents({
        focus: function() {
            this.addClass("focused");
        },
        blur: function() {
            this.removeClass("focused");
        },
        keydown: function() {
            this.addClass("editing");
            console.log("down");
        },
        keyup: function() {
            this.removeClass("editing");
        }
    });
});

$$("div").getRandom().focus();

当你说“我不能把焦点放在细胞上”时,你是说你不知道怎么做,还是说你试过,但有问题。如果是后者,请包含一些代码来演示该问题。@MisterMister:document.id('cell_1_1')。focus()不起任何作用。如果我将一个“keydown”事件附加到id为“cell_1_1”的div,它不会触发。我现在明白了。添加tabindex就是解决方案。我想我能做到。非常感谢。非常感谢。