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();
});

上記のフィドルでは、オーバーフローが auto に設定された div があり、セルの 1 つに入力フォーム要素がある特大のテーブルが含まれています。

左/右のカーソルキーを使用してサファリとクロムを使用すると、左端/右端の位置に達したときにdivが左/右にスクロールします。divスクロールを避けたい。

私が試したこと:

  • keydown/preventDefault - カーソルキーが機能しないようにします (明らかに)
  • keydown/stopPropagation - 変更はありません。これにより、div へのイベントのバブリングが停止することが期待されていました
  • 入力をフォームにラップし、その上でPropagationを停止しようとしています
  • 編集中は div のスクロールを無効にします - これは、IE/FF がスクロールバーを非表示/表示し、コンテンツが移動すると複雑になります
4

1 に答える 1

0

これは少しリグですが、たとえばhttps://stackoverflow.com/a/2897510を使用して、テキストの長さに対するキャレットの位置を検出できます。最後に(または開始して)falseを返すことができます。 )テキストと移動を試みています。

于 2013-02-12T19:03:03.373 に答える