javascript - 使用 jQuery 将事件转发到另一个元素

标签 javascript jquery html

我正在用 HTML/JS 制作一个网格控件,我希望它的行为尽可能像 Excel。我已经完成了大部分导航和编辑工作,但有一件事我想不通,我在网上找到的所有内容都不适用于我的情况。

首先我要解释一下我是如何实现它的: 我已经使用表格制作了网格并在每个 td 中插入了一个文本框。除非您双击单元格(很像在 Excel 中),否则文本框不会获得焦点。换句话说,单击一个单元格只需将其选中,然后双击即可对其进行编辑。您可以使用箭头键四处导航,这是通过在文档上附加一个按键事件处理程序来完成的。

现在,当一个单元格被选中时,我希望能够通过键入来开始编辑它。为此,我在我的事件处理程序中添加了一些代码来控制导航,检查用户是否正在键入可见字符 (e.charCode != 0) 并将焦点设置在所选单元格的文本框中。除了用户键入的第一个字符未被文本框接收外,这工作正常。显然 .trigger 是可行的方法;这是我到目前为止尝试过的方法

self.editCell.trigger(jQuery.Event('keypress', {which: e.charCode}));

我尝试传递更多参数,如 keyCode、charCode 等,但没有成功。

那么将击键传递给输入控件的最佳方式是什么?

最佳答案

您要更改的唯一行为是您想要使用箭头键在其他单元格之间导航,对吗?

为什么不让 native 代码处理繁重的工作并只检测方向键的使用,而不是将操作列入白名单?

类似于:

function cellKeyDown(e) {
    if (e.keyCode > 36 && e.keyCode < 40) {
        // select a new cell
    }
}

关于javascript - 使用 jQuery 将事件转发到另一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6970125/

相关文章:

javascript - 如何优化这个简单的 jquery 代码?

javascript - 使用javascript根据第一个选择列表选项更改第二个选择列表

javascript - 未捕获的类型错误 : Cannot read property 'then' of undefined in React ajax Call?

javascript - 单击模式提交按钮后打开警报窗口

javascript - CORS 与 django 和 angularjs

javascript - 我怎样才能以更精简的方式完成这个 jQuery 代码?

html - 如何使用 CSS 边框以可视方式对我的部分进行分组?

javascript - 用随机字母/数字替换每个选定的值

jquery - 在jqgrid中如何选中行选择上的复选框?

html - Twitter Bootstrap 减少井和字段宽度