如何在文本区域中键入内容并将该文本添加到内容可编辑的 div 中?
How can I type in a textarea and have that text be added to a contenteditable div?
我的页面上有一个 <div contenteditable="true">
和一个 <textarea>
。我需要让在文本区域中键入的文本显示在 div 中,同时保留已经在 div 中的文本。我已经通过 textarea
上的 keyup
函数实现了这一点,但它无法正常工作。我相信问题一定是 contenteditable
文本变量随每个 keyup
更新。我尝试更改 value1
的范围,将其改为全局变量,但它仍然不起作用。有帮助吗?
这是我的代码:
$(".secondary").keyup(function () {
var value1 = $(".original").html();
var value2 = $(".secondary").val();
$(".original").html(value1 + value2);
});
div {
width: 300px;
height: 100px;
border: solid 1px #000;
overflow-y: scroll;
}
textarea {
width: 300px;
height: 100px;
border: solid 1px #000;
resize: none;
overflow-y: scroll;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Content Editable:</p>
<div class="original" contenteditable></div>
<br><br>
<p>Text Area:</p>
<textarea class="secondary"></textarea>
因此,如果您在 contenteditable
中键入“Foo”,在 textarea
中键入“bar”,contenteditable
中的文本应为“foobar”。
此外,如果 contenteditable
中的最后一个字符是 space,则在 textarea
中键入会在 contenteditable
中添加一个 <br>
。有办法解决这个问题吗?
最好使用更改事件而不是 keyup:
$(".secondary").change(function () {
var value1 = $(".original").html();
var value2 = $(".secondary").val();
$(".original").html(value1 + value2);
/*Reset text area*/
$(".secondary").val('');
});
我更愿意使用 input
事件处理程序,而不是使用 keyup
。试试代码片段:
$(".secondary").on('input', function(event) {
var val = $('.original').text();
$('.original').text(val + event.originalEvent.data);
});
div {
width: 300px;
height: 100px;
border: solid 1px #000;
overflow-y: scroll;
}
textarea {
width: 300px;
height: 100px;
border: solid 1px #000;
resize: none;
overflow-y: scroll;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Content Editable:</p>
<div class="original" contenteditable></div>
<br><br>
<p>Text Area:</p>
<textarea class="secondary"></textarea>
我的页面上有一个 <div contenteditable="true">
和一个 <textarea>
。我需要让在文本区域中键入的文本显示在 div 中,同时保留已经在 div 中的文本。我已经通过 textarea
上的 keyup
函数实现了这一点,但它无法正常工作。我相信问题一定是 contenteditable
文本变量随每个 keyup
更新。我尝试更改 value1
的范围,将其改为全局变量,但它仍然不起作用。有帮助吗?
这是我的代码:
$(".secondary").keyup(function () {
var value1 = $(".original").html();
var value2 = $(".secondary").val();
$(".original").html(value1 + value2);
});
div {
width: 300px;
height: 100px;
border: solid 1px #000;
overflow-y: scroll;
}
textarea {
width: 300px;
height: 100px;
border: solid 1px #000;
resize: none;
overflow-y: scroll;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Content Editable:</p>
<div class="original" contenteditable></div>
<br><br>
<p>Text Area:</p>
<textarea class="secondary"></textarea>
因此,如果您在 contenteditable
中键入“Foo”,在 textarea
中键入“bar”,contenteditable
中的文本应为“foobar”。
此外,如果 contenteditable
中的最后一个字符是 space,则在 textarea
中键入会在 contenteditable
中添加一个 <br>
。有办法解决这个问题吗?
最好使用更改事件而不是 keyup:
$(".secondary").change(function () {
var value1 = $(".original").html();
var value2 = $(".secondary").val();
$(".original").html(value1 + value2);
/*Reset text area*/
$(".secondary").val('');
});
我更愿意使用 input
事件处理程序,而不是使用 keyup
。试试代码片段:
$(".secondary").on('input', function(event) {
var val = $('.original').text();
$('.original').text(val + event.originalEvent.data);
});
div {
width: 300px;
height: 100px;
border: solid 1px #000;
overflow-y: scroll;
}
textarea {
width: 300px;
height: 100px;
border: solid 1px #000;
resize: none;
overflow-y: scroll;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Content Editable:</p>
<div class="original" contenteditable></div>
<br><br>
<p>Text Area:</p>
<textarea class="secondary"></textarea>