我试图显示在另一个文本区域中在一个文本区域中键入/粘贴/剪切/删除的内容。但是按退格键和删除键时出现问题。我可能也会遇到删除选择,剪切,粘贴,撤消,重做等问题。我怎样才能最好地解决这个问题?码:



<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.onkeydown = function(e) {
				if(!e.ctrlKey) {
					if (e.which >= 65) {//A
						var letter = String.fromCharCode(e.which);
						if (!e.shiftKey) letter = letter.toLowerCase();
						b.value = b.value.substring(0, a.selectionStart) + letter + b.value.substring(a.selectionEnd);
					} else if (e.which === 8) {//backspace
							var text = b.value;
							var till = a.selectionStart === 0 ? 0 : a.selectionStart - 1;
							b.value = text.substring(0, till) + text.substring(a.selectionEnd);
					} else if (e.which === 46) {//delete
						var text = b.value;
						var van = text.length < a.selectionEnd ? a.selectionEnd : a.selectionEnd + 1;
						b.value = text.substring(0, a.selectionStart) + text.substring(van);
					}
				}

			}
		</script>
	</body>
</html>

最佳答案

有什么理由不使用.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>

08-08 02:37