将输入中的换行符转换为<br />标记

6
我已经实现了一段代码,它的工作原理如下:
点击enter键会生成
标签。我希望在用户点击enter键时,它能够生成我想要的
标签,但同时又不可见。以下是参考代码:
<script type="text/javascript">
   function EnterEventDesc(e) {
       if (e.keyCode == 13) {
           var input = $("#ctl00_ContentPlaceHolder1_txtJobDesc");
           input.val(input.val() + "<br/>");
           return false;
       } else {
           return true;
       }

   }
 </script>  

有一个 <br /> 标签出现了,但是我想同时将其隐藏起来。请帮忙。


你的输入是文本区域还是文本输入框? - j08691
8
如果不使用隐藏的输入元素,就无法做到那样。为什么不使用<textarea>元素,然后在服务器端将换行符转换为换行标签? - BenM
为什么你要先插入一个 br 然后再隐藏它呢?如果你不想要换行,就根本不要插入它... - feeela
@Jon:你能分享一些关于所见即所得的东西吗? - user3917239
@BenM:你能分享一些实现这个的链接吗? - user3917239
显示剩余3条评论
3个回答

2

看起来您正在使用ASP.Net,试图将输入的换行符转换为<br />标签,以便在其他地方使用,比如保存到数据库中。 如果是这样,您走错了路,应该让用户在文本框中使用回车键创建新行,完全删除js代码,然后在代码后端使用以下函数:

C#:

public static string LineBreaksTextToDB(string input)
{
    return System.Text.RegularExpressions.Regex.Replace(input, "([^\\r])[\\n]", "$1\\r\\n").Replace("\\r\\n", "<br />");
}


VB.NET:

Public Shared Function LineBreaksTextToDB(ByVal input As String) As String
    Return System.Text.RegularExpressions.Regex.Replace(input, "([^\r])[\n]", "$1\r\n").Replace("\r\n", "<br />")
End Function

那么就像这样做:
... = LineBreaksTextToDB(txtMyInput.Text)

所有的换行符都会转换成<br />标签。


更新:
如果您想在输入框中调用已保存的数据,则需要将<br />转换回换行符。但是,如果您尝试在类似于Lable的元素中显示数据,则不需要做任何操作,因为<br />标签会自动实现在HTML中。

C#:

public static string LineBreaksDBToText(string input)
{
    return input.Replace("<br />", System.Environment.NewLine);
}


VB.NET:

Public Shared Function LineBreaksDBToText(ByVal input As String) As String
    Return input.Replace("<br />", vbCrLf)
End Function

那么就像这样做:
txtMyInput.Text = LineBreaksDBToText(myDatabaseTable.myField)

所有的<br />标签都会被转换为新行。

注意:我不确定C#,这只是使用该转换器转换的VB代码。


你能用C#为我做吗? - user3917239
1
@Shrutika: 请检查更新后的答案并告诉我结果。 - Moshtaf
... = LineBreaksTextToDB(txtMyInput.Text) 这里的 ... 意味着需要做什么? - user3917239
是的,我想将该描述保存到数据库中,并从那里在前端中的重复器中显示。我能够获取“<br />”标记,但无法使该标记不可见。 - user3917239
这行代码应该加在哪里?txtMyInput.Text = LineBreaksDBToText(myDatabaseTable.myField) 在页面加载时? 另外,它是否直接将myDatabaseTable.myField作为参数? - user3917239
显示剩余4条评论

0
如果您使用 textarea,则会得到纯文本,不需要 <br>
在后端将纯文本的换行符 \n 转换为 <br>
或者,当使用 HTML 代替 textarea(所见即所得编辑器)时,您可以通过 CSS 设置换行行为。
#myEditorBox {
    white-space: pre;
}

0

如果你想要换行,可以插入"\n"而不是<br>


我的问题是如何使文本区域中的 <br /> 标签不可见。如何实现? - user3917239
“使它们不可见”是什么意思?您希望它们存在于源代码中但不显示出来吗?您的最终目的是什么? - Asenar
当我点击回车键时,文本区域会出现一个 <br/> 标签,我想隐藏它。 - user3917239
删除所有的 JavaScript 代码,这将隐藏 <br> 标签。 - Asenar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接