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

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

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

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

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

是否可以这样做,或者我必须使用 e.preventDefault(); 然后手动移动光标位置 JavaScript 吗?我希望有一个更简单的解决方案。 :)

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

编辑:

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

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

也许你需要检查输入插入符的位置以分析你是否e.preventDefault()

休闲一个例子:

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