Js 与 TextArea

     当给一个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

posted @ 2014-04-18 16:53  百年俊少  阅读(3532)  评论(1编辑  收藏  举报