Как я могу отразить выделение текста? - PullRequest
1 голос
/ 26 августа 2009

Скажем, у вас есть два входа:

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

такой, что с помощью некоторой магии JavaScript все, что вы вводите в input1, также будет помещено в input2. В этом смысле input2 "отражает" input1.

Есть ли способ, которым я также могу "отразить" выделение текста. Так что, если я выберу какой-то текст на входе input1, как я могу выбрать такой же текст на input2?

Я смотрел на объект Microsoft TextRange и объект Selection, используемый Mozilla и др., Но весь этот беспорядок кажется довольно громоздким. У кого-нибудь был какой-нибудь успех, делая что-то подобное раньше?

РАЗЪЯСНЕНИЕ: Спасибо за ответы до сих пор. Чтобы было ясно: я не спрашиваю, как отразить текст. Я уже решил это. Вопрос только в том, чтобы выбрать текст на входе1 и выбрать соответствующий текст на входе2.

Ответы [ 3 ]

1 голос
/ 26 августа 2009

Насколько я вижу, в Firefox и Opera очень легко. Google Chrome и 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>
0 голосов
/ 26 августа 2009

Вы можете выполнить первую часть, о которой спрашиваете (например, мой ответ здесь ), но не 2-ю часть - просто невозможно иметь более одного активного выбранного диапазона за раз.

0 голосов
/ 26 августа 2009

Если вы можете жить с помощью JQuery , то клонирование можно выполнить следующим образом:

$("#input1").keyup(function() { 
  $("#input2").val( $("#input1").val() );
}
...