2014-10-19 40 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