禁止使用箭头键滚动页面,但仍允许光标在文本字段中移动

Prevent page-scrolling with arrow keys, but still allow cursor to move within text field?

本文关键字:光标 许光标 移动 字段 文本 滚动 禁止      更新时间:2023-09-26

是否可以使用JavaScript阻止箭头键滚动页面(在本例中为水平滚动),但仍允许箭头键在文本字段中移动光标?

例如,我在超宽<div>中输入了一个文本,当我使用箭头键将光标移动到文本末尾时,它将水平滚动页面。

我知道我可以使用event.preventDefault();来阻止默认行为,但这也会阻止光标移动。我也试过e.stopPropagation();,它似乎也不起作用。

有可能做到这一点吗?还是我必须使用e.preventDefault();,然后用JavaScript手动移动光标位置?我希望有一个更简单的解决方案

以下是一个JSFiddle演示我的问题:http://jsfiddle.net/h6ug57u0/

编辑:

我应该注意,我只是在输入中有焦点时才尝试实现这种行为。否则,我不想妨碍浏览器的默认行为——我知道很多用户使用箭头键滚动。

如果您是否e.preventDefault(),您可能需要检查输入插入符号的位置以进行分析。

衰减示例:

http://jsbin.com/cunidinuvo/edit?html,js,输出

为什么不在文本框中添加一个onkeypress事件处理程序,然后检查箭头键?