我发现了以下代码片段,用于在按下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之后,即使没有选择文本,这两个属性始终具有某些值。为什么会这样?