2014-10-19 58 views
0
$('#submit').click(function(){ 
    $.post('/0002.php', $('#foo').serialize(),  
    function(output){ 
     $('#output').html(output); 
    }); 
}); 

<form name="foo" id="foo"> 
    <textarea name="t" wrap="hard"></textarea> 
    <span id="submit">Click</span> 
</form> 
<div id="output"></div> 

// PHPjQuery的岗位textarea的包装很难不表明换行符

<?PHP 
if(isset($_POST['t'])){ 
    echo nl2br($_POST['t']); 
} 
?> 

我有一个textarea集包硬,但它不工作时,我使用jQuery后,jQuery的岗位不显示换行符。

任何人都知道如何解决这个问题?

+0

根据文档nl2br将\ r \ n,\ n \ r前插入
,\ n和\ r http://php.net/manual/en/function.nl2br.php 你检查那textarea实际上是生产那些? – 2014-10-19 00:47:59

+0

我试过没有jquery的普通帖子,它的工作 – Ben 2014-10-19 01:02:21

+0

仔细观察,im点击跨度不提交按钮 – Ben 2014-10-19 02:04:54

回答

0

我相信这是因为't'只会在您通常提交表单时才会通过PHP。既然你是通过ajax来做的,你必须将这个参数作为参数传递给jquery中的post请求,而事实并非如此。在你的情况下,你正在使用序列化的整个窗体,可能会从textarea中删除新行...打开你的chromebug /萤火虫,并检查你到底发送什么作为POST请求的数据加载,并提供更新,所以我们可以帮助。

因此,唯一的解决方案解决方法是:

  • 要么解析文本区域,并用给定的宽度计算有多少个字符可以适应,把一个
    或\ r \ n之后,在一个隐藏的输入/ DIV并发送它。字符的宽度很难找到,字体应该是固定的宽度。
  • 或者做一个实际的POST,但有一个iframe,因为它是在我发送的链接中讨论的(https://stackoverflow.com/a/2142815/986160)。
+0

我发现这个帖子有同样的问题 http://stackoverflow.com/questions/10574365/serializing-textarea-with-wraphard -doesnt-give-line-breaks – Ben 2014-10-19 03:49:32

+0

在jsfiddle http://jsfiddle.net/gTWhC/中删除了wrap =“hard”,但我没有看到任何区别。从 http://www.w3schools.com/tags/att_textarea_wrap.asp 我读过wrap =“hard”,在提交表单时用新行包装textarea文本。这个例子也不是你发送的那个表单 - 你点击一个ajax调用。为了提交表单,你必须做$(“form_id”),submit()或类似的东西。换句话说,您不要提交表单,因此wrap =“hard”会被忽略。我在这里没有看到问题。 – 2014-10-19 04:11:46

+0

检查此讨论和一些建议的解决方案: http://stackoverflow.com/问题/ 2140573/html-textarea-use-javascript-to-get-wrapped-text – 2014-10-19 04:16:15