如何知道插入符号是否位于文本区域的最后一个字符

How to know if caret resides in the last character in textarea?

本文关键字:文本 区域 字符 最后一个 插入 何知道 符号 是否 于文本      更新时间:2023-09-26

我有一个类似excel的可编辑表,我正在进行切换到下一个单元格的keydown处理。

假设我有以下单元格,其中插入符号高亮显示:

This is a text|

在上面的例子中,插入符号位于最后一个字符,所以如果用户按下键盘上的右键,我需要将单元格编辑器切换到下一个单元格。

我的问题是,如何知道插入符号位于keydown事件处理程序中文本区域的最后一个字符?

由于您总是要检查最后一个字符,因此可以在每个keydown上获取textarea valuelength属性,并将length与文本区域的selectionEnd属性进行比较:

selectionEnd-指定或返回选定当前元素中的文本。

示例:

document.getElementById("textAreaIdHere").onkeydown = function(){
  // Get length of textarea value
  var len = this.value.length;
  // If character entered is at the end of the textarea (therefore cursor)
  if(this.selectionEnd === len) {
    // Is at the end
  }   
}

jsFiddle此处


selectionEnd仅在IE9+之后可用。对于在较旧的浏览器中实现此功能,此填充程序可能有用。