一尘不染

如何使用JavaScript从文本框控件中获取选定的文本

javascript

我有一个文本框和一个链接按钮。当我写一些文本时,然后选择其中一些,然后单击链接按钮,必须在文本框中显示一个带有消息框的文本。

我该怎么做?


当我单击下面的文本框的“提交”按钮时,消息框必须显示Lorem ipsum。因为在该区域中选择了“ Lorem ipsum”。


如果我从页面中选择任何文本并单击“提交”按钮,则该文本有效,但如果我将文本写入文本框并使其成功,则无效。因为当我单击到另一个空间时,文本框的选择被取消。

现在的问题是,当我从文本框中选择一个文本并单击任何其他控件或空格时,仍必须选择选定的文本。

怎么做?


阅读 330

收藏
2020-04-25

共1个答案

一尘不染

好的,这是我的代码:

function ShowSelection()
{
  var textComponent = document.getElementById('Editor');
  var selectedText;

  if (textComponent.selectionStart !== undefined)
  {// Standards Compliant Version
    var startPos = textComponent.selectionStart;
    var endPos = textComponent.selectionEnd;
    selectedText = textComponent.value.substring(startPos, endPos);
  }
  else if (document.selection !== undefined)
  {// IE Version
    textComponent.focus();
    var sel = document.selection.createRange();
    selectedText = sel.text;
  }

  alert("You selected: " + selectedText);
}

问题是,尽管我为IE提供的代码在许多站点上都有提供,但我无法使其在我当前系统上的IE6副本上正常工作。也许它将对您有用,这就是为什么我给它。
您寻找的技巧可能是.focus()调用,它可以将焦点返回给textarea以便重新激活选择。

[更新]我通过onKeyDown事件得到了正确的结果(选择内容):

document.onkeydown = function (e) { ShowSelection(); }

所以代码是正确的。同样,问题是单击按钮即可获得选择…我继续搜索。

[更新]使用li标记绘制的按钮没有成功,因为当我们单击它时,IE会取消选择先前的选择。上面的代码使用一个简单的input按钮即可,但是…

2020-04-25