用javascript模拟粘贴到文本区域
Simulate paste into Textarea with javascript
当将数据从剪贴板粘贴到html文本区域时,它会进行一些非常酷的解析,使粘贴看起来与复制的换行符非常接近。
例如,我在一个页面上选择了以下html(所有内容都以蓝色突出显示),然后我copy
它:
Hello
<br>
<br>
<br>
<div>more</div>
<div>last</div>
所以需要明确的是,我复制的是这个jsfiddle的输出。
现在,当我将这个神奇的、复制的文本粘贴到文本区域时,我看到了我所期望的:"Hello", empty line, empty line, empty line, "more", "last"
。凉的然后,当我在文本区域使用jQuery的.val()时,我得到了"Hello'n'n'nmore'nlast"
。超级酷。它使用了br
和div
,并能够从中推断出正确的换行符
现在。。。
我尝试以编程方式执行的操作采用了我之前复制的相同数据,并将其设置为文本区域的值,就好像它是粘贴的一样。
以下是我尝试过的。。。
所以,假设我之前复制的东西是用<div id="parent">...</div>
包装的。
var parent = $("#parent");
var textarea = $("#theTextArea");
// Set the value of the text area to be the html of the thing I care about
textarea.val(parent.html());
现在我知道这与复制粘贴不同,但我希望它能照顾我,做我想做的事。事实并非如此。文本区域将填充Hello<br><br><br><div>more</div><div>last</div>
。曾经不可见的html现在被字符串化并成为文本的一部分。
显然我做错了。html()当然会返回html的字符串。但是,我是否可以在parent
上调用一些东西,为我提供具有所有推断换行符的文本?。我试过调用parent.text()
,但这只提供Hellomorelast
(没有换行)。
有几个注意事项可以帮助我找到答案:我正在使用Angular,所以我可以访问他们所有的好东西和jQuery。
编辑:
解决方案
这并不好,但您可以尝试用换行符"''n"替换html标记,或者在html文件中进行一些换行并用text()获取内容。
var parent1 = $("#paren1");
var textarea1 = $("#theTextArea1");
var parent2 = $("#paren2");
var textarea2 = $("#theTextArea2");
// Set the value of the text area to be the html of the thing I care about
var text = parent1.html();
text = text.replace(new RegExp("<br>", 'g'),"'n");
text = text.replace(new RegExp("<div>", 'g'),"");
text = text.replace(new RegExp("</div>", 'g'),"'n");
textarea1.val(text);
textarea2.val(parent2.text());
JSFiddle
- onkeyup无法动态创建多个文本区域
- 具有所有样式的文本正在复制到可编辑文本区域
- 在文本区域POST后解码JSON
- 在文本区域中使用jQuery.text()保持换行符
- ng在下拉列表和文本区域提交
- 将文本插入光标所在的文本区域
- 离开页面导航后保留文本区域内容
- Javascript-在文本区域中断,但不在段落中中断
- 当选择值x时,Javascript需要在正确的位置显示文本区域,从而循环通过具有选择选项的表单
- 测试文本区域中的特定文本格式
- 文本编辑后,append函数不适用于文本区域
- 如何在ReactJs中链接下拉列表和文本区域
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- 使用JSON文件中的变量(字符串)填充文本区域
- JavaScript-如果以前不存在文本,如何从文本区域删除新行
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 如何为动态创建的文本区域中输入的值更新ng模型
- 延迟高亮显示文本区域中的文本
- 将字母添加到文本区域的末尾
- TinyMCE在新添加的文本区域