メッセージ(msg)をテキストフィールドに挿入する次の関数を作成しました。
テキストを挿入した後、カーソルは入力されたメッセージの最後の文字の後にある必要があります。テキストフィールドにはすでにテキストが含まれています。
メッセージを挿入すると、カーソルはメッセージの終わり近くのどこかにフォーカスされますが、最後の文字の後ではありません。一部の文字が .length でカウントされないようです?
function insertAtCursor(msg) {
var textArea = document.getElementsByName("message")[0];
textArea.value = textArea.value.substr(0, textArea.selectionStart) + msg + textArea.value.substr(textArea.selectionEnd);
var endMsgPos = textArea.value.lastIndexOf(msg) + msg.length;
textArea.setSelectionRange(endMsgPos, endMsgPos);
}