1

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 隐藏/显示滚动条和内容四处移动时,这会变得复杂
4

1 回答 1

0

这有点麻烦,但是您可以使用以下方法检测插入符号相对于文本长度的位置:https ://stackoverflow.com/a/2897510然后您可以简单地返回 false 如果在结尾(或开始) 的文本并试图移动。

于 2013-02-12T19:03:03.373 回答