为了账号安全,请及时绑定邮箱和手机立即绑定

了解JQuery TextArea的取值与赋值问题

标签:
JQuery

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

先说取值:

 

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
01.$("#textarea").text();//读取  

最近测试时候发现在firefox或Chrome中读取不出textArea的值,IE正常。


于是修改为:

 


[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
01.$("#textarea").val();  

问题解决,不过搜索时,发现有人提另一个问题:

当在一个textarea标签中键入一个回车时,实际上会插入2个符号:\n\r \n 回车符 \r 换行符

如果用text()获取textarea中的值,那么存入数据库的数据就只会有\r 如果用var()获取textarea中的值,
 那么存入数据库的数据就只会有\n 这样的区别就是,在IE下,
 你如果是读取用text()存入的数据在展示在textarea中,那么数据的换行是正常的。
 而读取用var()存入的数据在展示在textarea中,那么数据的就不会换行。
 没有具体测试过看来用val()也不妥当。但是这也是必求之策。

再说赋值:
 看代码:

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
01.$("<div id='x1'><textarea id='t1'></textarea>" +  
02. "<textarea id='t2'></textarea></div>").appendTo("body");  
03.$("#t1").text("AAA");$("#t2").val("BBB");  
04.alert("t1=" + $("#t1").text() + "/" + $("#t1").val());  
05.alert("t2=" + $("#t2").text() + "/" + $("#t2").val());  
06.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()前做了这件事迴避问题:


[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
01.$theDiv.find("textarea").each(function() { $(this).text($(this).val()); });   

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

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消