【问题标题】:Ace editor (form) - Can I preserve line breaks/text format?Ace 编辑器(表单) - 我可以保留换行符/文本格式吗?
【发布时间】:2018-03-30 02:12:27
【问题描述】:

正在为我的学校构建一个 MVC Sinatra 应用程序的项目。我想创建一个可以使用 ace 编辑器保存和显示回 sn-ps/algos 的网络应用程序。

我想出了如何(看似)通过 ace 编辑器捕获表单输入,方法是隐藏输入字段并使用下面的 sn-p 在更改时从 ace 分配值。

//CAPTURE/SET VALUE
var textarea = $('input[name="content"]');
editor.getSession().on("change", function () {
    textarea.val(editor.getSession().getValue());
});

我的表单是这样的

<!--ACE EDITOR-->
<div id="editor"></div>
To open settings panel, inside editor - CTRL+Q (Windows) | CMD+Q (Mac)
<!--------------------------------------------------------->

<!--FORM-->
<form action="/ace" method="POST"> 

  <!--normal-->
  <input type="text" name="content" style="display: none;" />

  <!--submit-->
  <input type="submit" value="Save">
</form>

我可以很好地捕获参数,但问题是它不保留换行符所以输入...

def something

end

进入 ace 编辑器并单击提交会返回

"def something  end"

理论上我很想得到类似的东西

"def something\n\nend"

或类似的东西......你得到了漂移

我需要能够以某种方式使用编辑器来捕获输入,并在提交时将其分配给一个对象属性,如此伪

snippet = Snippet.new(:content => params[:content])

然后能够调用它并以正确的格式显示在编辑器上

snippet.content (preserves linebreaks) 

完整的代码和图像HERE 如果您更喜欢视觉效果。 任何帮助将不胜感激,如果有什么我遗漏的,请告诉我..希望我提供了足够的信息和详细的信息。

【问题讨论】:

  • 我认为从会话中获取值也提供了 \n(new line break) .. 只需在 \n 上进行拆分并检查你是否得到了一些东西。
  • 你能给我举个例子来说明你的意思吗?如果这就是我认为你的意思,我已经尝试过了并取回了这个i.imgur.com/tgIYXOg.png
  • 在设置输入值之前,我还在 js 中尝试了textarea.val(editor.getSession().getValue().split("\n").join("\n"));,它可以在浏览器控制台上运行,但是当发送到输入时仍然返回而没有中断

标签: javascript html ruby ace-editor sinatra-activerecord


【解决方案1】:

input 不接受换行符,你需要使用 textarea 来代替。

【讨论】:

  • 嘿抱歉回复晚了.. 我尝试使用 textarea 但后来我没有显示 ace 编辑器。我找到了一种解决方法,有机会我会添加答案,但如果您想看看我做了什么和/或测试更改输入到 textarea 存储库时会发生什么,这是我的存储库:github.com/AlphaDaniel/snalgos
猜你喜欢
  • 2011-10-20
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
相关资源
最近更新 更多