0

私はすでに答えを得ましたが、私はこれに小さな報奨金を始めます。答えは不可能だということなので、私は別の解決策や他の提案を探しています。

HTMLのdesignModeを使用して非常にカスタマイズされたエディターを作成しています。ある状況では、実際のキーを1回押すときに、キーを押すというデフォルトのアクションを2回実行する必要があります。この場合、私はDOWNキー(keyCode 40)について話しています。|それを押すときは、カーソル( )を次の行に置いて、1行スキップしたいと思います。好き:

First li|ne
Second line
The third line

下矢印キーを押した後:

First line
Second line
The third| line

Keypressイベントをプログラムで設定し、JavaScriptでトリガーしてみましたが、カーソルが移動しません。これを行う方法についてのアイデアはありますか?

4

2 に答える 2

2

あなたは賢明な方法でこれを行うことができなくなります。SelectionIE以外のブラウザでプログラムでカレットを移動する唯一の方法は、下矢印キーをエミュレートするメカニズムがないブラウザのオブジェクトを使用することです。

于 2010-07-30T14:55:02.317 に答える
0

あなたはいくつかのテクニックの組み合わせでそれを行うことができます。1つ目は、テキスト領域内の任意の位置にカーソルを移動する関数です。

function setCaretPosition(elemId, caretPos) {
    var elem = document.getElementById(elemId);

    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}

上記のコードは、このブログ投稿からのものであり、表示するにはgoogleキャッシュを使用する必要がありました。次に、テキストエリアで現在のカーソル位置を見つける必要があります。

最後に、現在のカーソル位置を使用して、カーソル位置に関連してキャリッジが返すindexOf()を取得し、それを使用してカーソルを2行下に移動できます。

かなりそうではありませんが、動作するはずです。

于 2010-07-30T15:11:36.250 に答える