将输入的 NewLines 转换为 <br /> 标签
Posted
技术标签:
【中文标题】将输入的 NewLines 转换为 <br /> 标签【英文标题】:Convert input's NewLines to <br /> tags 【发布时间】:2014-10-12 19:44:40 【问题描述】:我已经实现了一个代码,它的工作原理是这样的:-
点击进入它会生成<br />
标签。我希望它应该生成我想要的<br />
,每当用户点击进入时它应该生成<br />
标签,但同时它不应该是可见的。请查找代码供您参考:-
<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 />
标签即将到来,但我想同时隐藏它。请帮忙
【问题讨论】:
您的输入是文本区域还是文本输入? 看起来您的输入是文本字段或文本区域。您无法在这些控件中隐藏 任何内容。看起来使用现成的 WYSIWUG 编辑器而不是自定义代码可能是值得的。 如果不使用隐藏的输入元素,您将无法做到这一点。为什么不使用<textarea>
元素,然后在服务器端将换行符转换为换行符?
为什么要先插入br
然后隐藏它?根本不要插入它,如果你不想换行的话……
@Jon:你能分享一些与所见即所得有关的东西吗?
【参考方案1】:
您似乎正在使用 ASP.Net,并且您正在尝试将 Input 的 NewLines 转换为 <br />
标记,以便在其他地方使用,例如保存在数据库中。
如果是真的,你的方法不对,让用户使用 Enter 键在 textarea 中创建新行,完全删除 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)
并且所有的 NewLines 都被转换为<br />
标签。
更新:
如果你想在一个Input中回调这个保存的数据,那么你需要再次将<br />
转换为NewLine。但是,如果您尝试以 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 />
标签都被转换为NewLines。
注意:我不确定 C#,它只是使用 This Convertor 转换的 VB 代码。
【讨论】:
你能帮我用 C# 做吗 @Shrutika:检查更新的答案,让我知道结果。 ... = LineBreaksTextToDB(txtMyInput.Text) here ... 意味着需要做什么? @Shrutika:假设您想在数据库中保存txtMyInput.Text
,如果您正常执行此操作,您会错过数据库中的新行,但如果您使用LineBreaksTextToDB(txtMyInput.Text)
,则所有新行都将转换为<br />
,并且保存在数据库中。
是的,我想将该描述保存在数据库中。从那里我必须在前端的中继器中展示这一点。我能够获得 标签。但无法使该标签不可见【参考方案2】:
如果要换行,可以插入"\n"
而不是<br>
【讨论】:
我的问题是使 标签从 textarea 中不可见。如何做到这一点? “使它们不可见”是什么意思?您希望它们在源代码中但不显示?你的最终目的是什么? 当我点击进入一个 标签进入文本区域时,我想隐藏那个标签 删除所有的 javascript 代码,这将隐藏 标签。【参考方案3】:如果您使用textarea
,则为纯文本,不需要<br>
。
在后端将纯文本换行符\n
转换为<br>
。
或者,当使用 HTML 替换文本区域(所见即所得的编辑器)时,您可以通过 CSS 设置换行行为。
#myEditorBox
white-space: pre;
【讨论】:
以上是关于将输入的 NewLines 转换为 <br /> 标签的主要内容,如果未能解决你的问题,请参考以下文章
org.json.JSONException:java.lang.String 类型的值 <br 无法转换为 JSONObject