当给一个js变量赋值一个有换行的值得时候,就会报错:

<!DOCTYPE HTML>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var bad = "大家
早上好,
空气
不错哦"; $("#p1").html(bad); }); </script>
</head>
<body>
<p id="p1"></p>
<p id="p2"></p>
<div>
<textarea id="content"></textarea>
</div>
</body>
</html>

比如这段代码中,bad 变量赋值就出错了。

什么时候会出现这种赋值呢,那就是从textarea的值存到数据库之后,然后取出来直接赋值某个js变量的时候就会出现这种情况。

那就先从数据存入说起:

textarea虽不是富文本,但是可以多行显示。比如这样:

把textarea的值存入数据库中某个字段,你会看着这个字段中存入的 只有输入的这几个字,

看不到其他html标记。但可以看出来 在回车的地方文字之间的距离宽一些,似乎有空格。

取值 赋值:

如果在js代码中直接这样赋值

var bad = <%=badContent%>

就会出现开头那个错误的赋值,一个多行的文本赋值给一个js变量。

一个可行的办法是这样:在页面上设置一个隐藏域,将后台取的值放到隐藏域中,然后用js/jquery 把这个值取出来,赋值到 js变量上。

(方法来源:http://bbs.csdn.net/topics/310152073

然后将该js变量显示到需要显示textarea内容的html标签处。用下面的方式模拟一下,如下所示:

<!DOCTYPE HTML>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript"> function show()
{
var content = $("#content").val();
$("#p1").html(content);
} </script>
</head>
<body>
<p id="p1"></p>
<p id="p2"></p>
<div>
<textarea id="content"></textarea>
</div>
<div>
<button onclick="show()">显示内容</button>
</div>
</body>
</html>

内容虽然显示但是没按照预想的一样显示,没有换行。 这是怎么回事?怎么办呢?

我们看到的那个宽点的空白是空格吗?不是。是textarea的换行符‘\n’ 而不是'\r\n'

知道了换行符是什么,那接下来就好办了,把'\n'换成<br/>则就显示出换行了。

注意使用正则替换可以把所有的换行都替换掉

<!DOCTYPE HTML>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript"> function show()
{
var content = $("#content").val();
var contentformat = content.replace(/\n/g,'<br/>');
$("#p1").html(contentformat);
} </script>
</head>
<body>
<p id="p1"></p>
<p id="p2"></p>
<div>
<textarea id="content"></textarea>
</div>
<div>
<button onclick="show()">显示内容</button>
</div>
</body>
</html>

方法来源:http://www.cnblogs.com/xrwang/archive/2011/04/27/LineBreakInJavascript.html

http://cjzuo-java-gmail-com.iteye.com/blog/1090174

Js 与 TextArea的更多相关文章

  1. js操作textarea方法集合

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  2. 使用div模拟textarea,实现文本输入框高度自适应(附:js控制textarea实现文本输入框高度自适应)

    一.使用textarea标签进行多行文本的输入有很多限制,比如不能实现高度自适应,会出现难看的滚动条等问题. HTML5中添加了一个新属性contenteditable,该属性可以让input,tex ...

  3. JS获取TextArea和Input的同步值

    在提交表单时,如果只是表单值,用一个form即可,但有时候需要将整个表单一起提交,则可通过以下js实现. <!DOCTYPE html> <html xmlns="http ...

  4. js限制textarea文本框的文字个数

    现在发微博,那个文本框一般只能输入200字好像,再多就会自动删除,要么是提示字数受限,用Js就可实现本功能.今天带来的这个Js限制表单文本 框文字数量的例子,相信有此方面需要的是个不错的参考.为了便于 ...

  5. js控制textarea输入字符串的个数,鼠标按下抬起推断输入字符数

    [Html代码] <table> <tr> <td width="150">短信内容:</td> <td> <te ...

  6. js实现textarea自适应高度

    html结构: <div class="container" id="container"> <div class="text-wr ...

  7. 通过JS控制textarea的输入长度

    废话不多说,直接上代码(因为自己也只是遇到的时候然后上网查到的解决办法,放在此处只是为了方便各位看以及以后再碰到用起来方便) <ul> <li> <textarea ro ...

  8. 工作记录(JS向textarea添加固定内容、通过固定字符将字符串分割为数组)

    第一个是在 textarea 输入框中添加固定的内容. 代码如下: <textarea id="text" cols="30" rows="10 ...

  9. 【分享】 封装js操作textarea 方法集合(兼容很好)。

    请使用下面的btn操作. 虽然你现在看来没什么用,当要用的时候又到处找资料,还不如现在收集一下.         在DOM里面操作textarea里面的字符,是比较麻烦的. 于是我有这个封装分享给大家 ...

随机推荐

  1. 基于Ogre的DeferredShading(延迟渲染)的实现以及应用

    http://blog.sina.com.cn/s/blog_458f871201017i06.html 这篇文章写的不错,从比较宏观的角度说了下作者在OGRE中实现的延迟渲染

  2. Ext4.2 grid 条件查询使用

    项目中用到Ext4.2,初次接触,用的不是太熟,做个总结,恳请指正! 1.grid重新设置条件,查询结果不是从第1页开始 在处理grid条件查询时,点击搜索按钮调用store.load()方法时,会把 ...

  3. webstorm 11 安装配置 grunt 时遇到的问题及解决办法

    想学grunt的可以看看这篇文章,写的很有意思,教程之类的我就不写了,网上很多资料,我就记录下我遇到的问题和解决办法. http://yujiangshui.com/grunt-basic-tutor ...

  4. 各系统下设置输入法按键为ctrl+shift+space

    xp=====(一直找不到..原来右边是可以下拉的).. linux  ibus----- 设置---直接按下Ctrl+Shift+Space

  5. linux 下安装JDK1.7

    安装JDK1.7 1. 打开网址http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u5-downloads-1591156.ht ...

  6. c++ 字符串工具类

    #include <string> #include "util.h" namespace strtool{ std::string trim(const std::s ...

  7. hibernateTemplate的load方法

    hibernateTemplate的load方法采用延迟加载,所以应当注意. 如果配置不当,采用此方法获取对象,往往会出现异常: javax.servlet.ServletException: org ...

  8. Linux---Ls命令 初级实现

    By xxx0624Done:    ls    ls -a    ls -l    ls /tmp    ls -R    ls -t    FileName color    FileName o ...

  9. valgrind基本使用

    1.valgrind是一个内存检测工具,类似的还有purify,insure++等 2.测试文件test.c test.c : main(){ int* a=new int[100]; return ...

  10. node.js 异步式I/O 与事件驱动

    Node.js 最大的特点就是异步式 I/O(或者非阻塞 I/O)与事件紧密结合的编程模式.这种模式与传统的同步式 I/O 线性的编程思路有很大的不同,因为控制流很大程度上要靠事件和回调函数来组织,一 ...