我有一个<div contenteditable="true"></div>
,当我在其中输入一些内容,然后删除这些内容时,似乎浏览器会自动将<br>
元素插入到此元素中。
有没有人有相关经验?知道如何解决?
我有一个<div contenteditable="true"></div>
,当我在其中输入一些内容,然后删除这些内容时,似乎浏览器会自动将<br>
元素插入到此元素中。
有没有人有相关经验?知道如何解决?
Enter
键时,浏览器会添加 <br>
标签,但当你按下 Space
键时则不会。 - trysis在开发Web应用的一个功能时,我曾遇到过这个问题。这是浏览器的默认行为,就像文本编辑器中的换行一样。最好的处理方式是在提交/抓取内容时对其运行正则表达式以删除标签,并在没有可用文本时将其清空。
通常我使用<br>标签来确定我的换行位置。某些浏览器使用<p>标签,因此请务必进行跨浏览器测试。
<br>
,并将其视为空的情况来处理。这似乎有点hackish。想知道是否有更好的解决方案。 - Tri Nguyen我终于能够复现这个问题了。无论元素的类型是什么,当它内部的所有元素节点都为空(textContent===''
)时,可编辑元素将被插入到一个<br>
元素中。
这里提供一个稳定的示例来复现此问题:
<p
style={{ padding: 10 }}
contentEditable tabIndex={1}>
<span></span>
{"123"}
<span></span>
</p>
将元素类型从p
更改为span
无法解决问题。
因此,建议事先检查空元素并将其删除。
对我而言,这似乎很好用。如果你想去掉空格,可以使用以下代码:
str = $('div[contenteditable="true"]');
str.replace(/ /gi, '');
如果你想移除 <br>,可以使用以下方法:
str = $('div[contenteditable="true"]');
str.replace(/<br>/gi, '');
myselect.attr('contenteditable', 'true');
myselect.find('br').remove();
myselect.find('br').remove();
,它会删除所有的<br>
标签,这不是一个好方法。更好的方式是将其更改为myselect.find("br:last-child")
以仅删除最后一个<br>
标签。 - Muhammad Musavi.myEditable br
{
display: none;
}
.myEditable div
{
display: inline;
}