根据插入符号的位置从文本区域中提取整个单词

Extract the whole word from a textarea depending on where the caret is

本文关键字:区域 提取 单词 文本 插入 符号 位置      更新时间:2023-09-26

我有一个html文本区域,我需要从其中的文本中提取单词,具体取决于插入符号的位置。

所以,如果插入符号在一个单词中,或者只是在一个单词的开头(或结尾)的末尾,我需要得到它。

我该怎么做?我不是在寻找库,只是简单的javascript。请帮忙。

这里有一些代码可以完成这项工作。基本上,提取插入符号位置。将句子转换为数组。循环数组将单词长度加在一起,当长度大于插入符号位置时,您找到了单词。

<html>
<script>

    function getCaret(node) {
      if (node.selectionStart) {
        return node.selectionStart;
      } else if (!document.selection) {
        return 0;
      }
      var c = "'001",
          sel = document.selection.createRange(),
          dul = sel.duplicate(),
          len = 0;
      dul.moveToElementText(node);
      sel.text = c;
      len = dul.text.indexOf(c);
      sel.moveStart('character',-1);
      sel.text = "";
      return len;
    }
    function getWord()
    {
        var el = document.getElementById('myText');
        var carret = getCaret(el);
        var words = el.value.split(' ');
        var x = 0;
        for(var i = 0; i < words.length; i++)
        {
            debugger;
            x += words[i].length + 1;
            if(x > carret){ return words[i]; }
        }

    }
    function myWord()
    {
        var word = getWord();
        alert(word);
    }
</script>
<body>
    <button onclick="myWord();" >Get word</button>
    <textarea id="myText">This is a hallo world sentence</textarea>
</body>
</html>