1

假设您有两个输入:

<input id="input1" type="text"/><input id="input2" type="text"/>

这样,通过一些 JavaScript 魔法,您在 input1 中键入的任何内容也将被放入 input2 中。从这个意义上说,input2“镜像”了 input1。

有没有办法我也可以“镜像”文本选择。因此,如果我在 input1 中选择了一些文本,我怎样才能在 input2 中选择完全相同的文本?

我一直在查看 Microsoft 的 TextRange 对象和 Mozilla 等人使用的 Selection 对象,但整个混乱似乎相当麻烦。以前有没有人成功地做这样的事情?

澄清:感谢到目前为止的回复。需要明确的是:我不是在问如何镜像文本。我已经解决了那个。问题只是关于选择 input1 中的文本并选择 input2 中的相应文本。

4

3 回答 3

1

据我所知,在 Firefox 和 Opera 中这很容易。谷歌浏览器和 IE 没那么多。这是在 FF 中工作的代码:

<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
</head>
<body>

<input type="text" size="40" id="sel-1" value="Some long text">
<input type="text" size="40" id="sel-2" value="Some long text">

<script type="text/javascript">
var sel_1 = document.getElementById("sel-1");
var sel_2 = document.getElementById("sel-2");

document.onmousemove = function () {
    sel_2.selectionStart = sel_1.selectionStart;
    sel_2.selectionEnd   = sel_1.selectionEnd;
}
</script>
</body>
</html>
于 2009-08-25T21:04:11.610 回答
0

你可以做你问的第一部分(就像我在这里的回答),但不能做第二部分 - 一次不可能有多个活动的选定范围。

于 2009-08-25T20:38:49.307 回答
-1

如果您可以使用JQuery,则可以通过以下方式进行克隆:

$("#input1").keyup(function() { 
  $("#input2").val( $("#input1").val() );
}
于 2009-08-25T20:38:00.027 回答