http://jsfiddle.net/ianhk/t9Hj6/
<div style="width:250px; height: 100px; border: black solid 1px; overflow:auto">
<table style="height:200px; border: red solid 1px">
<tr>
<td>abcdefghi</td>
<td>
<input id="text" value="Some text">
</td>
<td>abcdefghi</td>
</tr>
<tr>
<td>test</td>
<td>test</td>
<td>test</td>
</tr>
</table>
</div>
$("#text").on("keydown", function (ev) {
ev.stopPropagation();
});
在上面的小提琴中,我有一个溢出设置为自动的 div,其中包含一个超大表格,其中一个单元格中有一个输入表单元素。
使用 safari 和 chrome 使用左/右光标键会导致 div 在到达最左/最右位置时向左/向右滚动。我想避免 div 滚动。
我尝试过的事情:
- keydown/preventDefault - 防止光标键工作(显然)
- keydown/stopPropagation - 没有变化,期待这会阻止事件冒泡到 div
- 将输入包装在一个表单中并尝试在该表单上停止传播
- 在编辑时禁用 div 上的滚动 - 当 IE/FF 隐藏/显示滚动条和内容四处移动时,这会变得复杂