【问题标题】:when enter pressed for the first time one br is appending from next time 2brs is appending?当第一次按下输入时,从下次添加 2brs 开始添加一个 br?
【发布时间】:2015-10-17 15:06:49
【问题描述】:

如何让我的光标在按下回车键时向下移动一行并防止默认?

我使用的代码如下:

var docFragment = document.createDocumentFragment();
var newEle = document.createTextNode('\n');
docFragment.appendChild(newEle);
newEle = document.createElement('br');
docFragment.appendChild(newEle); 
var newEle = document.createTextNode('\n');
docFragment.appendChild(newEle);
newEle = document.createElement('br');
docFragment.appendChild(newEle);
var range = window.getSelection().getRangeAt(0);
range.deleteContents();
range.insertNode(docFragment); //create a new range 
range = document.createRange();
range.setStartAfter(newEle);
range.collapse(true);
var sel = window.getSelection() sel.removeAllRanges();
sel.addRange(range);

【问题讨论】:

标签: javascript ckeditor editor text-editor rich-text-editor


【解决方案1】:

你误以为它是关于“线条”的。在 contenteditable 元素中按 Enter 的标准行为是创建新段落 (<p>),或者如果您在列表中,则创建列表项等。

段落之间的默认间距(边距)是一行高。

如果您想要换行,您需要使用 CSS 将容器标记为 white-space: pre,或者拦截按键,取消其默认操作,然后插入 br 元素。我认为第一个选项更容易。

或者,您可以减少父容器中段落之间的边距。

【讨论】:

  • 我使用这个来自 redlining concept.i 构建编辑器同时在我的编辑器中下沉 redlining 它给出了问题nytimes.github.io/ice/demo
  • @amarabkrish 它工作正常,只是不能满足 的要求。我没有为您编写代码而获得报酬,但如果您开始使用并更新您的问题,说明您如何尝试实现所需的行为,我会提供更多帮助。
  • @tffy 嗨,我发现你的 id 是 tffy@free.fr 我邮寄了我的应用程序,请查看。
  • 我不会“调查”。您可以自行决定并在您的问题中发布相关代码。如果您不明白我的回答,请说出您希望我澄清的内容。
  • 在应用程序中按下输入,icedemo 创建一个新的跨度标签。基于跨度标签,我创建了一个新的弹出窗口,以便用户可以接受或拒绝更改。现在如果用户写 10,就会出现问题创建了第 10 行弹出窗口,现在我需要在单个弹出窗口上显示所有 10 行信息,以便用户可以在一个命令中批准或拒绝更改。为了解决这个问题,我覆盖了输入键功能。这样做时输入无法正常工作.enter 举止笨拙
猜你喜欢
  • 2018-05-19
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 2023-03-11
相关资源
最近更新 更多