私の最大の問題は、置き換えられた後、カーソルがテキストエリアの最後にデフォルト設定されることです。入力しても問題ありませんが、もし私が戻って編集しているのであれば、本当に面倒です。ここで私が試したことがあります(テキストエリアのIDは「エリア」です).replace()の後ろにカーソル位置を戻します。
var el = e.area;
position = el.selectionStart; // Capture initial position
el.value = el.value.replace('\u0418\u0410', '\u042F');
el.selectionEnd = position; // Set the cursor back to the initial position.
ので、置換テキストの長さは右、入力したテキストの長さは異なることができますか? – ConnorsFan
こんにちは、そうかもしれません。 .replace()の最も一般的な使い方の1つは、単に文字列から単語/句を削除することです。たとえば、.replace( 'word'、 '')は 'word'を ''で置き換えて、それを削除します。これはカーソルと実際には違いはありません。長さにかかわらず最後に移動します。 – Zackh105
しかし、それは解決策に違いがあります。元の位置を単純に復元しても、長さが変更されていればカーソルが正しく戻されません。 – ConnorsFan