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

标签 javascript html textarea caret

我有一个 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>

关于javascript - 根据插入符号的位置从文本区域中提取整个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28093158/

相关文章:

javascript - 类型 'toPromise' 上不存在属性 'Observable<Response>' 并且参数 'response' 隐式具有 'any' 类型

javascript - 将一些数据转换成 json 格式但不确定它是否有效

javascript - 在文本字段中输入内容时,有没有办法触发浏览器默认的 "scroll to cursor"行为?

css - CSS 高度是否取决于宽度?

html - 如何在用户单击按钮时将文本添加到文本区域

javascript - runat ="server"破坏了我的 jQuery - datepicker

javascript - 从 Angular 中的 Node.js 获取响应

html - valign 中间不工作

html - 在内容伪类中添加更多空白

css - 为什么 div 在 IE 中底部被拉伸(stretch)但在 chrome 中运行良好