我在HTML / JS中进行网格控制,我希望它能像Excel一样尽可能地运行。我已经完成了大部分的导航和编辑工作,但有一点我无法弄清楚,我在网上找到的所有东西都不适用于我的情况。
首先,我要解释一下我是如何实现它的: 我使用表格制作了网格,并在每个td中插入了一个文本框。除非您在单元格中双击(非常类似于Excel),否则文本框不会获得焦点。换句话说,单击一个单元格只需选择它,您可以通过双击来编辑它。您可以使用箭头键进行导航,这是通过在文档上附加按键事件处理程序来完成的。
现在,当选择一个单元格时,我希望能够通过输入来开始编辑它。为此,我在我的事件处理程序中添加了一些代码来控制导航,该导航检查用户是否正在键入可见字符(e.charCode!= 0)并将焦点设置在所选单元格的文本框中。除了文本框没有收到用户输入的第一个字符外,它工作正常。显然.trigger是要走的路;这是我到目前为止所尝试的内容
self.editCell.trigger(jQuery.Event('keypress', {which: e.charCode}));
我尝试传递更多参数,如keyCode,charCode ......等,但没有成功。
那么将击键传递给输入控件的最佳方法是什么?
答案 0 :(得分:0)
您要更改的唯一行为是您想要使用箭头键在其他单元格之间导航,是否正确?
为什么不让本机代码处理繁重的工作而只检测箭头键的使用情况?
而不是白名单操作?类似的东西:
function cellKeyDown(e) {
if (e.keyCode > 36 && e.keyCode < 40) {
// select a new cell
}
}