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

时间:2015-11-18 16:06:19

标签: javascript scroll horizontal-scrolling

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

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

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

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

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

修改

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

2 个答案:

答案 0 :(得分:2)

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

举个例子:

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

答案 1 :(得分:0)

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