`

textarea 换行 导致读取赋值出错

 
阅读更多

转自:http://www.cnblogs.com/zhenmingliu/archive/2011/12/27/2303931.html

在easyui中的datagrid中使用行内编辑时textarea的换行保存到mysql数据库为\n
在textarea中输入回车符 在js读取textarea中的值有\r\n然后到业务层转换到string中就有可能变成空格形式然后被存入数据库,当在取出此值的时候则会变成空格的形式,因此我们需要将不显示的\r\n替换一下。

  在js取textarea的时候:

  如果用

var str = document.getElementById("textarea").value; 
str = str.replace("\r\n","<br>"); 



  则只会将第一个\r\n替换成<br>,如何将所有n个\r\n替换成<br>呢?难道要无限个replace吗?

  其实不用,replace可以和正则表达式结合,一次替换所有的\r\n。

var reg=new RegExp("\r\n","g"); 
str= str.replace(reg,"\r\n"); 

 

本人自己试验:但是这里我使用的是str = str.replace("\n","<br>");,其实用<br>或者其他字符替换不是最重要的\n,我在IE和FIREFOX和chrome下已经测试 ,仅仅使用\n即可

  这样str中所有的\r\n就替换成<br>了.然后可以将其存入数据库。

  在取出的时候 只用将值在替换回来即可

var reg=new RegExp("<br>","g"); 
stt= str.replace(reg,"\r\n"); 
document.getElementById("textarea").value=str; 

 

本人自己试验:

var reg=new RegExp("<br>","g");
stt= str.replace(reg,"\n");
  更加详细的分析和应用可以参考JavaScript的replace方法与正则表达式结合应用讲解 

  下面是我写的2个函数 直接放到通用包中 以后使用可以替换

function replaceTextarea1(str){
var reg=new RegExp("\r\n","g"); 
var reg1=new RegExp(" ","g"); 

str = str.replace(reg,"<br>"); 
str = str.replace(reg1,"<p>"); 

return str; 
}


function replaceTextarea2(str){
var reg=new RegExp("<br>","g"); 
var reg1=new RegExp("<p>","g"); 

str = str.replace(reg,"\r\n"); 
str = str.replace(reg1," "); 

return str; 
} 

 2. html中通<textarea>标签提交的内容会将回车转变成"\r\n",再将提交的内容放入<textarea>标签中显示时,回车符会还原成正常的换行。

但当带有"\r\n"的字符串放在html的普通文本域中显示时 ,原来的换行效果会转变成空格,因此,需要在显示前将字符串中的"\r\n"替换为"</br>"。

另外,还有一点需要注意:EL表达式会将"</br>"换行符转变成"&lt;/br&gt;","&lt;"和"&gt;"分别对应"<"和">",也就是说,到了页面上,还是显示为"</br>"(呵呵,EL的智能化程度太高了),为了补救这一点,需要使用jsp标签(<%= %>)来进行显示。

所以当需要在普通文本域中显示由<textarea>提交的内容时,可以直接在数据库里存储不经过处理的字符串,而只在显示前将"\r\n"替换为"</br>",然后在页面上使用<%= %>来显示这些内容.



3. 如果将通过textbox提交到数据库中的空格和回车正确显示出来
public   string   MyReplace(string   mystr)   
  {   
  if(mystr   ==   null   ||   mystr   ==   ""   )   
  {   
  return("&nbsp;");   
  }   
  else   
  {   
  mystr   =   mystr.Replace("\n\r","<br>");   
  mystr   =   mystr.Replace("\r","<br>");   
  mystr   =   mystr.Replace("\t","  ");   
  return(mystr);   
  }   
  }

分享到:
评论

相关推荐

    关于Textarea的换行问题

    关于Textarea的换行问题,是前端开发中一个常见的议题,特别是在处理用户输入的多行文本时。在HTML中,Textarea是一种允许用户输入多行文本的表单控件,其换行处理方式对于用户体验和数据存储至关重要。然而,在这段...

    处理textarea换行空格

    处理`textarea`中的换行和空格通常涉及到用户输入的格式化和处理,这在多个场景下都是必要的,例如数据存储、表单提交或者富文本编辑等。本篇文章将深入探讨如何在JavaScript或相关前端技术中处理`textarea`的换行和...

    展示Html : 文本转HTML格式 解决Textarea换行问题

    标题中的“展示Html : 文本转HTML格式 解决Textarea换行问题”暗示了这是一个关于将纯文本转换为HTML格式以适应在网页上显示,特别是针对textarea控件中换行处理的技术点。在网页开发中,textarea通常用于输入多行...

    js 特效 html 特效 textarea是否自动换行

    js 特效 html 特效 textarea是否自动换行

    HTML里面Textarea换行问题总结

    问题解决1: 一开始是提交数据的时候格式是AAA&lt;BR&gt;BBB,但是这是显示换行,其实在TextArea里面并不是真正按行存放的,因为这个时候再提交给另外一个TextArea的时候就是显示AAABBB,而不是换行显示了,因此仅仅是显示...

    textarea换行符

    当用户在`textarea`中按下回车键时,浏览器会将其识别为换行符(`\r\n`),这在JavaScript读取`textarea`的值时也会体现出来。然而,在后续的数据处理过程中,例如在业务逻辑层将这些值转换成字符串形式并存储到...

    处理textarea中的换行和空格

    当用户在 `textarea` 中输入并使用 JavaScript 提交文本时,空格和换行会被编码为 `/s` 和 `/n` 字符。在前端与后端交互时,处理这些特殊字符是确保文本正确显示的关键。 如果文本最终仍要在 `textarea` 中显示,...

    java swt中TextArea的自动换行代码

    用java swing的JTextArea很容易实现自动换行,但用Textarea却很难实现换行,所以发到网上供大家参考,大家一起学习学习!!!

    javascript经典特效---textarea是否自动换行.rar

    textarea是否自动换行.rartextarea是否自动换行.rartextarea是否自动换行.rartextarea是否自动换行.rartextarea是否自动换行.rartextarea是否自动换行.rar

    如何在textarea文本输入区内实现换行

    在默认情况下,`&lt;textarea&gt;`中的文本在显示时不会自动换行,这意味着如果你想要在textarea中实现换行,需要使用特定的字符序列来指示新的行开始。 在文本编辑器或者邮件客户端中,我们通常使用`\n`(也称为LF,Line...

    asp.net textarea换行函数代码

    具体来说,就是将用户在textarea控件中输入的换行符转换为HTML中可以正确显示为换行的标签。同时,替换其他的特殊字符也是为了保证内容在渲染到HTML页面时不会引起任何问题。 从给出的部分内容中我们可以看到一个名...

    jQuery替换textarea中换行的方法

    在给出的示例中,问题在于同事尝试使用`.text()`来获取textarea的值,这导致换行符被转换成了`\n`字符串,而不是实际的换行。因此,使用JavaScript的`replace()`方法替换`\n`无效,因为实际的换行符已经不存在了。 ...

    textarea保留换行的注意事项

    !innerHTML是返回对象的HTML代码,而textarea是一个文本输入框,要返回它的内容应该用value属性 fsdfsd fsdfs dfsdf [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

    php获取textarea的值并处理回车换行的方法

    在网页开发中,用户在`textarea`输入框中按下回车键时,浏览器并不会自动将回车转换为换行符,而是将它们保存为特定的字符序列,通常是`\r\n`(回车换行)。在PHP中,我们需要手动处理这些特殊字符以便正确地显示和...

    关于textarea提交的内容无法换行的解决办法

    然而,一个常见的问题是在用户在 `textarea` 中输入的换行在提交后无法在页面上正确显示,即所有输入被视为一行文本。这是因为浏览器在解析 HTML 时,`textarea` 中的换行符 `\n` 不会被识别为换行,而是需要使用 `...

    textarea是否自动换行

    关于“textarea是否自动换行”的问题,实际上`&lt;textarea&gt;`标签自身是支持文本自动换行的。当用户在textarea中输入内容时,如果文本长度超过了当前列宽,浏览器会自动进行换行,确保文本在textarea内正常显示。 然而...

    PHP获取表单textarea数据中的换行问题

    在各种输入框中,textarea是一个多行文本输入控件,用户可以在这里输入段落文本,并且通常需要保留用户输入时的格式,包括换行。然而,在Web开发中,换行的表示方法并不是统一的,这主要是因为不同的操作系统使用...

Global site tag (gtag.js) - Google Analytics