【问题标题】:Move textbox caret to cursor [duplicate]将文本框插入符号移动到光标[重复]
【发布时间】:2014-10-31 16:55:50
【问题描述】:

我有一个文本区域,当悬停时,我希望插入符号跟随光标。就像我每次移动鼠标时都单击文本区域一样。这是我当前的js:

$("textarea").on("mousemove", function() {
    $(this).trigger("click");
});

我不想移动鼠标,而是文本区域中的插入符号。 Codepen link


更新

jQuery Set Cursor Position in Text Area 类似,但是我如何使用鼠标的坐标来设置插入符号的位置。如果我收到 X:120 Y:244 如何使用此方法设置插入符号

【问题讨论】:

  • 提供您的尝试,一些示例代码,并将问题缩小到您正在努力解决的问题。否则,看起来您只是希望有人为您做这件事,而这不是 Stackoverflow 的目的。
  • 很公平,这里有一个代码笔项目的链接:link。我正在尝试使用 jQuery 的 .trigger() 函数,但它并没有复制真正的鼠标点击。感谢您的反馈意见。 :)
  • 看看这看起来好多了:)
  • 在文本框中标记您当前位置的闪烁线。
  • 这很好,但我看不出如何使用鼠标的坐标来使用这种方法设置插入符号的位置。如果我收到 X:120 Y:244 如何使用此方法设置插入符号。

标签: javascript jquery


【解决方案1】:

有几个原因可以让您重新考虑实现这样的功能。

1.性能 mouseover 在很短的时间内触发大量事件,您必须重新计算插入符号的位置。在低端设备(如上网本或智能手机)上,这很快就会变得非常滞后。

2。可用性 在笔记本电脑和上网本的情况下,很容易发生您不小心触摸触摸板的情况,因此不小心将光标移动到一个全新的位置,这真的很烦人。

3.支持 考虑到大多数触控电脑(如平板电脑和智能手机)将无法使用您的功能。

4.用法 我想不出任何可以使此功能受益的用例。您赢得的唯一一件事是在用户端少点击一次。考虑用户已经将光标移动到他想要编辑的特定位置。再按下一根手指一点也不费力。


也就是说,如果您出于任何原因仍然决定使用它,您需要做的是获取 textarea 字段每一行的行高。使用每个字符具有相同宽度的单声道字体。获取 textarea 字段的高度和宽度。当滚动条不在顶部时,获取 textarea 字段的隐藏部分。最后获取文本区域内的光标位置。从所有这些数据中,您可以计算字符串的索引,然后使用您链接的 jquery 函数,其中两个参数相同$("textarea").selectRange(pos, pos);

【讨论】:

  • 这里有一些非常好的观点。此功能的更大图景是拖放“工具提示”。我希望插入符号跟踪“工具提示”,因此您似乎将要插入内容。释放时,工具提示中的单词将插入插入符号当前所在的位置。感谢您的反馈:)
  • @yaclive 你有没有找到解决方案?尝试做完全相同的事情并想知道您是否曾经想出更好的东西?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多