【问题标题】:selectionStart and selectionEnd for textarea/input not working properly in java script用于 textarea/input 的 selectionStart 和 selectionEnd 在 java 脚本中无法正常工作
【发布时间】:2017-08-12 19:03:54
【问题描述】:

我想获取光标位置的值,从开始焦点到结束 为此我正在使用

var doIt = function() {
    var elem = document.getElementById("mytext");
    var start = elem.selectionStart;
    var end = elem.selectionEnd;
    var selection = elem.selection;
    alert("selectionStart: " + start 
          + "\nselectionEnd :" + end
          + "\nselection: " + selection);
} 

但问题是 selectionStart 和 selectionEnd 仅获得相同的最后一个值。如何获得正确的开始和结束值 示例在这里 http://jsfiddle.net/5vd8pxct/ 我试过了

【问题讨论】:

  • 您的jsfiddle 正在为selectionStartselectionEnd 提供正确的输出。您的问题不清楚,您想要什么最终结果?
  • 当我第一次专注时,我的 selectionStart 将是 this.value 假设第一次我的 selectionStart 将是 5,然后我将再输入 5 个文本。现在我的 selectionStart 值是 5,选择结束应该是 10,但我都得到了 10,10
  • elem.selectionStartelem.selectionEnd 为您提供开始选择字符和结束选择字符的位置。因此,如果您将光标放在特定位置而不选择某些文本,那么它应该返回相同的值,正如预期的那样。要理解这一点,请尝试选择一些文本,然后检查结果。
  • 那么当我将光标放在某个段落之间并键入单词时,我怎样才能获得光标值。我的意思是需要获取光标值开始结束我在段落之间键入的单词的结尾
  • 好的,我明白了。它是如何工作的

标签: javascript


【解决方案1】:

我已经修改了您的代码以获得您想要的结果。这里 boolean firstKeyup 在第一次加载和单击按钮后跟踪第一个 keyup 事件。

var elem = document.getElementById("mytext");
var start = 0;
var firstKeyup = true;

elem.addEventListener('keyup', function() {
  if(firstKeyup) {
    start = elem.selectionStart;
    firstKeyup = false;
  }
});

function doIt() {
  var end = elem.selectionEnd;
  var selection = elem.selection;
  alert("selectionStart: " + start 
          + "\nselectionEnd :" + end
          + "\nselection: " + selection);
  firstKeyup = true;
}
<textarea id="mytext" rows="10" cols="30">
Really long text goes here
</textarea><br/>
<button onclick="doIt();">Click Me</button>

【讨论】:

  • 当我从文本字段中选择一定范围的文本时是否可以触发功能
  • 使用this 参考。另外,您可以查看thisthis
猜你喜欢
  • 2015-04-24
  • 2014-02-06
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 2018-10-02
相关资源
最近更新 更多