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>