在文本区域中获取和设置文本选择

柔音

我想创建一个文本区域,用户可以在其中选择文本的一部分,我将根据他们的选择做出反应。所以我需要

1)获取选择文本的开始和结束位置

2)获取焦点的位置(如果它在文本区域中并且没有选择)

似乎执行此操作的功能因浏览器而异。有人可以告诉我在Office加载项中执行此操作的方法是什么?

我尝试了以下2种方法(即,选择中的一部分文本myTextarea,单击button,然后调试代码),但它们似乎并不是正确的功能。

(function() {
    "use strict";

    Office.initialize = function(reason) {
        $(document).ready(function() {
            app.initialize();
            $('#button').click(showSelection);
        });
    };

    function showSelection() {
        // way 1
        console.log(document.selection); // undefined
        document.getElementById("myTextarea").focus();
        var sel = document.selection.createRange(); // Uncaught TypeError: Cannot read property 'createRange' of undefined
        selectedText = sel.text;
        // way 2 
        console.log(document.getElementById("myTextarea").selectionstart); // undefined
        console.log(document.getElementById("myTextarea").selectionend); // undefined
    }
})();

此外,如果还可以告诉我如何通过代码实现以下目标,那就太好了:

1)从开始和结束位置选择文本的一部分

2)将焦点设置在文本区域的某个位置

编辑1:

我只是window.getSelection()在我的Excel加载项中尝试过

function showselection() {
    var a = window.getSelection();
    var b = window.getSelection().toString();
    var c = window.getSelection().getRangeAt(0);
}

在textarea中选择一个文本后,单击button,我一步一步地调试了:第一行a a = Selection {anchorNode: null, anchorOffset: 0, focusNode: null, focusOffset: 0, is ...第二行返回"",第三行出现错误Home.js:19 Uncaught IndexSizeError: Failed to execute 'getRangeAt' on 'Selection': 0 is not a valid index.似乎选择未成功捕获...

这是没有Excel加载项框架的JSBin,它返回的结果几乎与上述相同。

用户名

使用JQuery。

例如,以下两行获得插入符号的位置:

function showselection() {
    console.log($('#myTextarea')[0].selectionStart);
    console.log($('#myTextarea')[0].selectionEnd);
}

有一些插件:

https://github.com/localhost/jquery-fieldselection

http://madapaja.github.io/jquery.selection/

第二个有几个带有按钮的简短示例(我们可能会丢失选择)。您可以使用他们的API,也可以查看他们的代码以查看他们调用了哪些JQuery函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用CTRL + A选择文本区域中的所有文本

来自分类Dev

如何右键单击以选择文本区域中的文本

来自分类Dev

计算文本区域中的字符数

来自分类Dev

计算文本区域中的特定字符

来自分类Dev

单击以获取插入符在文本区域中的位置

来自分类Dev

使用CSS和JS固定文本区域中的文本

来自分类Dev

AngularJS-文本区域中的多行

来自分类Dev

在文本区域中设置文本光标位置

来自分类Dev

我需要获取放置在文本区域中的每个元素

来自分类Dev

在文本区域中获取和设置文本选择

来自分类Dev

无法清除文本区域中的文本选择

来自分类Dev

在文本区域中选择行

来自分类Dev

选择值后无法在文本区域中设置必填属性

来自分类Dev

设置文本区域中的最大字符数

来自分类Dev

文本区域中的空间消失了吗?

来自分类Dev

文本区域中的列选择

来自分类Dev

选择选项并在文本区域中添加文本

来自分类Dev

在文本区域中将文本设置为粗体

来自分类Dev

计算文本区域中的特定字符

来自分类Dev

在文本区域中显示选定的选项

来自分类Dev

反向显示文本区域中的行

来自分类Dev

单个文本区域中的按钮值

来自分类Dev

文本区域中按钮的值

来自分类Dev

使用CSS和JS固定文本区域中的文本

来自分类Dev

在输入文本区域中设置插入符号的样式

来自分类Dev

在文本区域中左对齐文本

来自分类Dev

在文本区域中设置为只读

来自分类Dev

实时渲染文本区域中的文本

来自分类Dev

在文本区域中获取换行符