SelectionStart 和 SelectionEnd 对于文本区域意味着什么?

2024-01-08

我遇到了以下代码片段,将 Enter 插入到按下 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>已获得焦点但未选择任何文本,selectionStart and selectionEnd值将相同,并反映插入符在值中的位置<textarea>。失焦或blur of the <textarea>,它们将保持在之前设置的最后一个值blur event.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SelectionStart 和 SelectionEnd 对于文本区域意味着什么? 的相关文章

随机推荐