• JQuery TextArea的取值与赋值问题(textarea中回车清空问题)——个人转载整理


     

    JQuery TextArea的取值与赋值问题---(textarea中回车清空问题)

    JQuery TextArea的取值与赋值问题

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

    先说取值:

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

    $("#textarea").val(); 问题解决,不过搜索时,发现有人提另一个问题:   
    当在一个textarea标签中键入一个回车时,实际上会插入2个符号:\n\r  \n 回车符 \r 换行符
    如果用text()获取textarea中的值,那么存入数据库的数据就只会有\r
    如果用val()获取textarea中的值, 那么存入数据库的数据就只会有\n
    这样的区别就是,在IE下, 你如果是读取用text()存入的数据在展示在textarea中,那么数据的换行是正常的。
    而读取用val()存入的数据在展示在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()); });

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

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

    ------------------重要问题----------------------------------

    textarea中把回车键当作快捷键时候,并不要他显示换行动作。但浏览器处理了连个动作。

    无赖$("textarea").val("");也清空不了里面的内容。网上资料查阅无数。竟多少前辈也被困于此,拳脚不得施展。

    晚辈愚笨,偶然间坠入山洞山东,习得高人创的习武心得。追溯起源,终探得究竟。

    看招:

    $(document).keypress(function(e){ 

    if(e.ctrlKey && e.which == 13 || e.which == 10 || e.which == 13) { 

    $("#send").click();

    e.preventDefault();//屏蔽enter对系统作用。按后增加\r\n等换行

    $("#what").val("");

    });

    e.preventDefault();就是屏蔽enter键接下来的操作,啊哈哈哈。知道此招的固然是高人,莫笑小弟之欣喜。

    心得总结:

    所谓的困难,就是克服过去的不值一提!

    总结

    技术生涯也好比漫漫人生路,总是不断地遇到问题,解决问题。当人也会遇到一些棘手的问题让人招架不住,隔着屁儿着凉死翘翘。

    八过,咱们把一些遇到的问题,记下来。下载墙壁上,N年过后,某位后人遇到同类问题题,也不至于费尽心思浪费光阴啊。

    整天浪费光阴于此,又何以解救天下苍生呢。

    施主,你说贫僧说得对不对呀!啊哈哈哈……

    以上文章转载自网络,是否正确并未验证,请谨慎使用。

     ------------------------------------------------

    20191211

    textarea标签不应该换行,应该是:

    <textarea id='t1'></textarea>

    开始标签和结束标签之前不应该有空格,也不应该换行。

  • 相关阅读:
    页面性能:如何系统地优化页面?
    为什么CSS动画比JavaScript高效?
    Code Review
    浏览器中的页面之CSS是如何影响到渲染流程的
    async / await
    手撸Promise
    Promise
    宏任务和微任务
    有点恶心,随手写点儿
    关于判断用户输入的是不是int类型,这次没有正则表达式
  • 原文地址:https://www.cnblogs.com/Tpf386/p/3525115.html
Copyright © 2020-2023  润新知