JavaScriptを使用してテキストエリアのカーソル位置にテキストを挿入するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-20 11:32:02
オリジナル
923 人が閲覧しました

How to Insert Text at the Cursor Position in a Text Area using JavaScript?

JavaScript/jQuery を使用したカーソル位置へのテキストの挿入

Web 開発では、カーソルの位置にテキストを追加すると、ユーザー エクスペリエンスが向上します。 1 つのシナリオには、ユーザーがリンクをクリックしたときに事前定義されたテキストをテキスト ボックスにシームレスに挿入できるようにすることが含まれます。

カーソル位置にテキストを挿入

カーソル位置にテキストを挿入するには、次のようにします。次の JavaScript 関数を利用できます:

function insertAtCaret(areaId, text) {
  // Get the textarea element
  var txtarea = document.getElementById(areaId);

  // Check if the element exists
  if (!txtarea) {
    return;
  }

  // Determine the browser type (Internet Explorer or others)
  var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ?
    "ff" : (document.selection ? "ie" : false));

  // Calculate the cursor position
  var strPos = 0;
  if (br == "ie") {
    txtarea.focus();
    var range = document.selection.createRange();
    range.moveStart('character', -txtarea.value.length);
    strPos = range.text.length;
  } else if (br == "ff") {
    strPos = txtarea.selectionStart;
  }

  // Create a string that consists of the text before, after, and the inserted text
  var front = (txtarea.value).substring(0, strPos);
  var back = (txtarea.value).substring(strPos, txtarea.value.length);
  txtarea.value = front + text + back;

  // Reset the cursor position after inserting the text
  strPos = strPos + text.length;
  if (br == "ie") {
    txtarea.focus();
    var ieRange = document.selection.createRange();
    ieRange.moveStart('character', -txtarea.value.length);
    ieRange.moveStart('character', strPos);
    ieRange.moveEnd('character', 0);
    ieRange.select();
  } else if (br == "ff") {
    txtarea.selectionStart = strPos;
    txtarea.selectionEnd = strPos;
    txtarea.focus();
  }
}
ログイン後にコピー

例使用法

次の HTML および JavaScript コードは、insertAtCaret() 関数の使用方法を示しています。

<textarea>
ログイン後にコピー

以上がJavaScriptを使用してテキストエリアのカーソル位置にテキストを挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート