0

我有很好的功能可以满足我的需要,但在 IE 中它不考虑换行符,也许还有其他一些东西。

接下来是函数:

    this.createSelection = function (field, start, end) {
        if (field.createTextRange) {
            var selRange = field.createTextRange();
            selRange.collapse(true);
            selRange.moveStart('character', start);
            selRange.moveEnd('character', end - start);
            selRange.select();
        } else if (field.setSelectionRange) {
            field.setSelectionRange(start, end);
        } else if (field.selectionStart) {
            field.selectionStart = start;
            field.selectionEnd = end;
        }
        field.focus();
    }

需要修改两点:

  1. 使用换行符和其他内容突出显示文本的正确部分。

  2. 不仅在 textarea 内突出显示,甚至在 div、p、span 等中突出显示。

谢谢你的帮助。

4

1 回答 1

0

我已经在 Stack Overflow 上多次发布了一个函数,它针对文本区域和文本输入执行此操作,正确处理换行符。这是一个例子:

https://stackoverflow.com/a/3373056/96100

对常规 HTML 元素中的选择执行相同操作会比较棘手,而且定义也不太明确。这是一个关于这个的答案:

https://stackoverflow.com/a/9841644/96100

于 2012-09-07T17:30:39.983 回答