<ol> 用户按回车键时 HTML 列表中断



我有一个内容可编辑的div元素,其中包含一个使用<ol>的列表。如果用户选择的其他位置不是<li>则不会创建新的<li>项。如果用户在创建列表后按两次 Enter 键,则不会创建<li>项。

如何强制div 元素中的所有行都为<li>项目?

我没有小提琴帐户,但是如果您在此处的示例中添加内容可编辑标签,则可以查看/测试它的实际效果 http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_lists

contenteditable的效果因浏览器而异,但当列表位于可编辑区域内而不是声明为可编辑元素时,问题中描述的行为很常见。原因似乎是由于封闭元素是可编辑的,实现者认为应该有一种方法可以退出列表,例如在其后添加内容。

如果您更改单个内容可编辑块,例如

<div contenteditable>
some stuff
<ol><li>test</li></ol>
some other stuff
</div>

到三个这样的块,

<div contenteditable>
some stuff
</div>
<ol contenteditable><li>test</li></ol>
<div contenteditable>
some other stuff
</div>

然后行为发生变化:在列表中按两次 Enter 只会在那里添加一个空项目。

但是<ol contenteditable>有一个问题:它似乎使IE 9省略了列表编号(或ul列表项目符号),没有明显的方法将其放在那里。(编辑:这只发生在怪癖模式下。但是此错误可能存在于不同模式下的早期IE版本中。我建议在包装器元素上使用contenteditable,而不是像ol那样直接列出元素。

最新更新