JavaScriptでテキストエリアから選択したテキストの位置を取得する方法は?

。メリーランド州Tahazzot:

私はJavaScriptを使用して、選択したテキストの位置を取得したいです。例えば、
私は、単純なテキストエリアを持っています。

#input-text {
  resize: none;
  width: 50%;
  height: 50px;
  margin: 1rem auto;
}
<textarea id="input-text">I am a student and I want to become a good person</textarea>

私のテキストエリアでは、私はいくつかのテキストなどがあります。

"I am a student and I want to become a good person"

私が選択した場合、この文字列から、テキストエリアから「良い人になる」
私はJavaScriptで選択したテキスト/文字列の位置を取得することができますどのようにして?


開始位置が29であると終了位置が49であるので、ここで選択した文字列の文字は49で29と端から開始します

いまいましいです:

これは、ページ上のすべてのtextarea要素のためのマウスとキーボードでテキスト選択のために動作します。あなたが/必要キーボードの選択をしたくない場合は、セレクタを変更し、そこに具体的とのコメントを読んでどちらかにしてください。

var mySelection = function (element) {
    let startPos = element.selectionStart;
    let endPos = element.selectionEnd;
    let selectedText = element.value.substring(startPos, endPos);

    if(selectedText.length <= 0) {
      return; // stop here if selection length is <= 0
    }
    
    // log the selection
    console.log("startPos: " + startPos, " | endPos: " + endPos );
    console.log("selectedText: " +  selectedText);

  };

var textAreaElements = document.querySelectorAll('textarea');
[...textAreaElements].forEach(function(element) {
    // register "mouseup" event for the mouse
    element.addEventListener('mouseup', function(){
        mySelection(element)
    });
    
    // register "keyup" event for the keyboard
    element.addEventListener('keyup', function( event ) {
        // assuming we need CTRL, SHIFT or CMD key to select text
        // only listen for those keyup events
        if(event.keyCode == 16 || event.keyCode == 17 || event.metaKey) {
            mySelection(element)
        }
    });
});
textarea {
   resize: none; 
   width: 50%;
   height: 50px; 
   margin: 1rem auto;
}
<textarea>I am a student and I want to become a good person</textarea>

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=7461&siteId=1