2015-11-08 4 views
0

Я пытаюсь показать все, что напечатано/вставлено/вырезано/удалено в одном текстовом поле в другом текстовом поле. Но у меня возникают проблемы при нажатии backspace и delete. У меня, вероятно, проблема с удалением выбора, вырезанием, вставкой, отменой, повторением и т. Д. Как я могу лучше всего решить эту проблему? Код:Как синхронизировать два текстовых поля?

<html> 
 
\t <head> 
 
\t \t <title>Live Text Sync</title> 
 
\t \t <meta charset="utf-8"/> 
 
\t </head> 
 
\t <body> 
 
\t \t <textarea id="a"></textarea> 
 
\t \t <textarea id="b"></textarea> 
 
\t \t <script> 
 
\t \t \t var a = document.getElementById("a"); 
 
\t \t \t var b = document.getElementById("b"); 
 
\t \t \t a.onkeydown = function(e) { 
 
\t \t \t \t if(!e.ctrlKey) { 
 
\t \t \t \t \t if (e.which >= 65) {//A 
 
\t \t \t \t \t \t var letter = String.fromCharCode(e.which); 
 
\t \t \t \t \t \t if (!e.shiftKey) letter = letter.toLowerCase(); 
 
\t \t \t \t \t \t b.value = b.value.substring(0, a.selectionStart) + letter + b.value.substring(a.selectionEnd); 
 
\t \t \t \t \t } else if (e.which === 8) {//backspace 
 
\t \t \t \t \t \t \t var text = b.value; 
 
\t \t \t \t \t \t \t var till = a.selectionStart === 0 ? 0 : a.selectionStart - 1; 
 
\t \t \t \t \t \t \t b.value = text.substring(0, till) + text.substring(a.selectionEnd); 
 
\t \t \t \t \t } else if (e.which === 46) {//delete 
 
\t \t \t \t \t \t var text = b.value; 
 
\t \t \t \t \t \t var van = text.length < a.selectionEnd ? a.selectionEnd : a.selectionEnd + 1; 
 
\t \t \t \t \t \t b.value = text.substring(0, a.selectionStart) + text.substring(van); 
 
\t \t \t \t \t } 
 
\t \t \t \t } 
 
\t \t \t \t 
 
\t \t \t } 
 
\t \t </script> 
 
\t </body> 
 
</html>

ответ

2

Есть ли какой-либо причине не использовать .value для синхронизации 2 textarea сек?

<html> 
 

 
<head> 
 
    <title>Live Text Sync</title> 
 
    <meta charset="utf-8" /> 
 
</head> 
 

 
<body> 
 
    <textarea id="a"></textarea> 
 
    <textarea id="b"></textarea> 
 
    <script> 
 
    var a = document.getElementById("a"); 
 
    var b = document.getElementById("b"); 
 
    a.oninput = function(e) { 
 
     b.value = a.value; 
 
    } 
 
    </script> 
 
</body> 
 

 
</html>

Смежные вопросы