2013-07-25 33 views
7

Microsoft OfficeのOutlookのようなプログラムに見られる「自動修正」機能を幾分複製しようとしています。手始めにテキストエリアの特定の行の特定の位置にカーソルを設定します

、私は私がこれを下回る書かれているテキストに「*エージェント[」

を変更したい行の先頭にいつでもユーザーが「A」(文字aとスペース)あなたが上から下にテキストエリアに沿って入力している場合、うまく動作します。 しかし、テキストエリアの他の場所を入力するとテキストが変更され、カーソルがテキストエリアの最後に移動します。

変更されたテキストの最後に常にカーソルを置きたいとします。

は、私は、変数currentLineNumberに変更された行番号を持っていると私は、カーソルがその行中8番目の文字の後にする必要があります知っているが、私は

理想のIDのようなそこに行くためにそれを伝える方法がわかりませんよ〜のようなもの

function setCursor(row, position) { 
//.... code to set cursor 
} 

これを実行するにはどうすればよいですか?私は全体的に必要なものを達成するためのよりよい方法があれば、私はそれも公開しています。(私はjQueryを少し読んで理解するのが少し難しいですが)javascriptやjQueryソリューションを利用しています。

あなたは私はあなたのフィドルの参照更新しました

+0

[HTMLのテキストボックスにカーソルの位置を設定]の可能な複製(http://stackoverflow.com/questions/512528/set-cursor-position-in-html-textbox) –

答えて

10

問題を理解していない場合はここで

jsFiddleです:私はこの方法で使用されているVAR currentPositionを追加しました http://jsfiddle.net/eghpf/2/

function setSelectionRange(input, selectionStart, selectionEnd) { 
    if (input.setSelectionRange) { 
    input.focus(); 
    input.setSelectionRange(selectionStart, selectionEnd); 
    } 
    else if (input.createTextRange) { 
    var range = input.createTextRange(); 
    range.collapse(true); 
    range.moveEnd('character', selectionEnd); 
    range.moveStart('character', selectionStart); 
    range.select(); 
    } 
} 

これはどちらから来ますかjQuery Set Cursor Position in Text Area

何が起こるかrは常に最後の位置にあります)。 $('#systemNotesbuilder').val(arrayOfLines.join("\n"));に電話すると、その新しい値の後にカーソルを置くと、値全体が新しい値で上書きされます。カーソルをセットするコールは、そのコールの後でなければなりません。

+0

ありがとうございました。それは私が思っていたよりもはるかに苦痛であり、私はこれがどのように機能するか理解することができます。完璧! – DelightedD0D

関連する問題