文本框的回车(textarea)
Posted
技术标签:
【中文标题】文本框的回车(textarea)【英文标题】:Carriage returns for textbox (textarea) 【发布时间】:2011-10-28 01:43:21 【问题描述】:我有一个属性为 "wrap"="hard" 的文本区域(实际上它是服务器端文本框,但具有多种文本模式)。
<asp:TextBox TextMode=MultiLine runat=server ID=txt Width=50 Height=50 class=txtclass />
<asp:Button runat=server ID=btnServer OnClick=btn_Click Width=80 Text="Click server" />
<input type="button" value="Click client" onclick="clientclick();" id="btnClient" style="width: 80px;" />
protected void Page_Load(object sender, EventArgs e)
txt.Attributes.Add("wrap", "hard");
我输入的文本比文本区域宽。当我点击客户端按钮时,警报中的文本没有回车(如“111111111”)。
<script src="jquery-1.5.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
function clientclick()
alert($('.txtclass').val());
当我在调试时单击服务器按钮时,我看到文本有回车符(如“11111\r\n1111”)。
protected void btn_Click(object sender, EventArgs args)
var test = txt.Text;
问题是如何在客户端获取带有回车的文本?
【问题讨论】:
【参考方案1】:之前有几个人发布了与您相同的问题,并且普遍的共识是没有简单的、开箱即用的解决方案。解决方法似乎是一次遍历字符串一个单词并在换行时添加换行符。
在这种情况下提供了一些示例 JS - finding "line-breaks" in textarea that is word-wrapping ARABIC text
【讨论】:
感谢您的链接。这很有趣,为什么会这样?无论如何,服务器都会通过所有回车获得正确的文本,可能它会在发布的某个地方得到处理。 是的,从外观上看,新行是在发布到服务器时添加的。【参考方案2】:alert($('.txtclass').val().replace(/\r/g,"\r").replace(/\n/g,"\n"));
你尝试过类似的方法吗?
【讨论】:
【参考方案3】:由于您正在处理 html,您可以使用“”标签在文本框内强制换行。我为此苦苦挣扎了一段时间,终于找到了这个解决方案。它对我来说非常有效。
【讨论】:
【参考方案4】:这是如何完成的。
可读版本:
S=escape(The_textarea.innerHTML);
S=S.replace(/%0D%0A/g,'<br>');
S=S.replace(/%0A/g,'<br>');
S=S.replace(/%0D/g,'<br>');
S=unescape(S);
高效版:
S=unescape(escape(The_textarea.innerHTML).replace(/%0D%0A/g,'<br>').replace(/%0A/g,'<br>').replace(/%0D/g,'<br>'));
【讨论】:
我是正则表达式的方式 n00b 所以这是一个真正的问题,它会像replace(/%0D%0A|%0D|%0A/g,'<br>');
那样更“高效”吗?我必须做类似的事情,但不是使用“%0D%0A”字符, 我想知道 % 是否有什么奇怪的地方搞砸了【参考方案5】:
\n\r
回车符仍然存在,只是没有被解释(更改为 HTML)。
因此,请使用<br />
元素 - 在客户端,它们将被解释为 HTML 并根据需要显示换行符。
【讨论】:
以上是关于文本框的回车(textarea)的主要内容,如果未能解决你的问题,请参考以下文章
KindEditor获取多个textarea文本框的值并判断非空