【问题标题】:How to know if caret resides in the last character in textarea?如何知道插入符号是否位于 textarea 的最后一个字符中?
【发布时间】:2014-04-26 15:57:29
【问题描述】:

我有一个可编辑的表格,例如 excel 表格,我正在为切换到下一个单元格进行按键处理。

假设我有以下单元格突出显示插入符号:

This is a text|

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

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

【问题讨论】:

  • 您的示例中没有插入符号。可能你指的是管道?此外,我不确定 2013 年,但对于早期版本的 Excel,单元格(或范围对象)没有 keydown 事件。这些事件仅适用于表单和表单控件。
  • 你的意思是这样吗? jsfiddle.net/8Ayrd/32
  • 是的,就是这样!是跨浏览器的方式吗?
  • 我怎样才能用这种方法来确定左键盘键的单元格切换?

标签: javascript excel textarea caret


【解决方案1】:

由于您总是要检查最后一个字符,您可以在每个 keydown 上获取 textarea valuelength 属性,并将 length 与 textarea 的 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 here


selectionEnd 仅适用于 IE9+。要在旧版浏览器中实现此功能,this shim 可能有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2011-06-10
    • 2021-12-07
    • 2019-07-31
    相关资源
    最近更新 更多