javascript - textarea 的 selectionStart 和 selectionEnd 代表什么?

标签 javascript html jquery selection-api

我遇到了以下代码片段,用于将输入插入到按下 ctrl + enter 的文本区域中的文本中。

$("#txtChatMessage").keydown(MessageTextOnKeyEnter);
function MessageTextOnKeyEnter(e) {
    console.log(this.selectionEnd);
    if (e.keyCode == 13) {
        if (e.ctrlKey) {
            var val = this.value;
            if (typeof this.selectionStart == "number" && typeof this.selectionEnd == "number") {
                var start = this.selectionStart;

                this.value = val.slice(0, start) + "\n" + val.slice(this.selectionEnd);
                this.selectionStart = this.selectionEnd = start + 1;
            } else if (document.selection && document.selection.createRange) {
                this.focus();
                var range = document.selection.createRange();
                range.text = "\r\n";
                range.collapse(false);
                range.select();
            }
        }
        return false;
    }
}

我不明白这里的 selectionStart 和 selectionEnd 是什么意思?根据我阅读的文档,selectionStart-End 包含输入元素中所选文本的开始和结束。但是,这里没有明确选择文本。在执行 console.log 时,我可以看到即使未选择文本,这两个属性也总是有一些值。这是为什么?

最佳答案

selectionStart指定 <textarea> 中选择/突出显示文本的索引.同样,selectionEnd指定选择结束的索引。最初,它们被设置为 0 , 如果 <textarea>获得焦点但未选择文本,selectionStartselectionEnd值将相同,并反射(reflect)插入符号在 <textarea> 值内的位置.未聚焦或 blur<textarea> , 它们将保持在 blur 之前设置的最后一个值。事件。

关于javascript - textarea 的 selectionStart 和 selectionEnd 代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28663249/

相关文章:

javascript - .click 功能 .load 不起作用

javascript - Backbone : how to manipulate elements outside the element associated with View

javascript - 获取具有特定 CSS 类的 HTML 文档中的所有元素

html - HTML 文本周围的小圆圈图像/图标

jQuery UI Sortable 下推项目

c# - 从代码隐藏运行 javascript 函数

javascript - 单击元素时更改 fontawesome 图标/类

html - CSS:使图像流出父容器

javascript - 鼠标滚轮事件太快。如何禁用它

javascript - Fullcalendar 获取其父 colspan