JQuery TextArea的取值与赋值问题

简介:

首先,说明这不是一个简单的问题!

     先说取值:

$("#textarea").text();读取,最近测试时候发现在firefox中读取不出textArea的值,IE正常
于是修改为:

$("#textarea").val();
问题解决,不过搜索时,发现有人提另一个问题:
当在一个textarea标签中键入一个回车时,实际上会插入2个符号:\n\r \n 回车符 \r 换行符
如果用text()获取textarea中的值,那么存入数据库的数据就只会有\r 如果用var()获取textarea中的值,
那么存入数据库的数据就只会有\n 这样的区别就是,在IE下,
你如果是读取用text()存入的数据在展示在textarea中,那么数据的换行是正常的。
而读取用var()存入的数据在展示在textarea中,那么数据的就不会换行。
没有具体测试过看来用val()也不妥当。但是这也是必求之策。

   再说赋值:

   看代码:

$("<div id='x1'><textarea id='t1'></textarea>" +
 "<textarea id='t2'></textarea></div>").appendTo("body");
$("#t1").text("AAA");$("#t2").val("BBB");
alert("t1=" + $("#t1").text() + "/" + $("#t1").val());
alert("t2=" + $("#t2").text() + "/" + $("#t2").val());
alert($("#x1").html());

 

 

 

      在IE下,不管用val()或text()设定,后续的读取都正常;但在Firefox下,使用val()指定的值,画面上会出现,但是用text()或是透过html()检视时却是字串。因此在Firefox中,如果你希望设定给textarea值出现在html()中或可以被clone(),请用text(...)设定。

     且慢!! 事情如果这麽单纯,那麽连小学生也会跨浏览器了。使用text()设定时得注意换行问题,若你在IE中下text("A\nA"),在显示时只会呈现空一格而不会换行。依我测试的结果,在IE下text("A\r\A")得到显示结果比较接近预期,但是text("A\rA")在Firefox中显示时会换列,用text()取出时却是连在一起的... 这... 这... 这...

     最后,只能采取懦夫策略,在呼叫.clone()前做了这件事迴避问题:

   $theDiv.find("textarea").each(function() { $(this).text($(this).val()); }); 

 

     很丑,但看来是有效的! 如果有人有其他好点子,再分享一下吧!

   【著名心得】没有噼成一字马的本事,不要跟别人说你会"跨"浏览器!

















本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/551026 ,如需转载请自行联系原作者



相关文章
|
JavaScript
jquery在光标位置插入内容指定内容(input、textarea)通用
jquery在光标位置插入内容指定内容(input、textarea)通用
104 0
|
JavaScript 前端开发
jquery怎么给循环出来的列表(类似于text框)取值和赋值
jquery怎么给循环出来的列表(类似于text框)取值和赋值
70 0
jquery怎么给循环出来的列表(类似于text框)取值和赋值
|
JavaScript
jQuery数据结构渲染(4):复选框checkbox赋值
jQuery数据结构渲染(4):复选框checkbox赋值
94 1
|
JSON JavaScript 数据格式
jQuery数据结构渲染(3):文本和input/textarea框赋值
jQuery数据结构渲染(3):文本和input/textarea框赋值
80 1
|
JavaScript
jQuery 复选框 checkbox 取值和赋值
jQuery 复选框 checkbox 取值和赋值
209 0
|
JavaScript
【jQuery】input textarea 文本变化的动态监听
实时监听Input textarea文本变化的监听事件:【但不包含通过js动态添加改变的文本事件】 HTML: js: /** * textarea值改变事件的监听 */ $(document).
5728 0
|
Web App开发 JavaScript 前端开发
关于JQuery取textarea内容的问题
原生 使用jq直接取id 然后: - 调用html()/text() 只能拿到初始值 更改后的值拿不到 - 调用val() 就能拿到实时的值 使用NicEdit富文本编辑器 使用 jqury 2.
1599 0
|
JavaScript
jQuery|对象及变量赋值
jQuery的data() 方法向被选元素附加数据,或者从被选元素获取数据。 数据可以是一个值(键值对),也可以是对象。 实例 向 元素附加数据,然后取回该数据: $("#btn1").click(function(){ $("div").data("greeting", "Hello World"); }); $("#btn2").click(function(){ alert($("div").data("greeting")); }); 定义和用法 data() 方法向被选元素附加数据,或者从被选元素获取数据。
1167 0
|
Web App开发 JavaScript 数据库