jQuery .val()函数从textarea中清除'\ r \ n' - 为什么?

时间:2011-12-22 09:10:06

标签: jquery

我正在使用$("#text").val()从textarea字段获取文本并通过ajax发送,但是linebreaks(我的意思是textarea中的\r\n)完全消失了......为什么会这样,以及如何预防它?

谢谢!

1 个答案:

答案 0 :(得分:21)

取自the documentation for val()

  

注意:目前,在textarea元素上使用.val()会删除运输   从浏览器报告的值返回字符。当这个值是   然而,通过XHR发送到服务器,保留了回车(或   由不包含原始值的浏览器添加)。一个   可以使用valHook实现此问题的解决方法,如下所示:

$.valHooks.textarea = {
  get: function( elem ) {
      return elem.value.replace( /\r?\n/g, "\r\n" );
  } };

将上述代码段添加到您的javascript中会覆盖textareas的val()的默认行为,并会保留空格。

See here for jsFiddle.