文本框的回车(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,'&lt;br&gt;'); 那样更“高效”吗?我必须做类似的事情,但不是使用“%0D%0A”字符, 我想知道 % 是否有什么奇怪的地方搞砸了【参考方案5】:

\n\r 回车符仍然存在,只是没有被解释(更改为 HTML)。

因此,请使用&lt;br /&gt; 元素 - 在客户端,它们将被解释为 HTML 并根据需要显示换行符。

【讨论】:

以上是关于文本框的回车(textarea)的主要内容,如果未能解决你的问题,请参考以下文章

KindEditor获取多个textarea文本框的值并判断非空

如何通过使用 jQuery 拖动其右下角来调整文本输入框的大小(如 textarea)?

关于js中事件监听的问题(文本框 回车键 失去焦点)

怎样写CSS设置多行文本框的显示行数?

文本框中,回车键触发事件的js代码[多浏览器兼容]

textarea 动态填充内容 文本框高度自适应