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 がスクロールバーを非表示/表示し、コンテンツが移動すると複雑になります