2012-10-11 31 views
1

可能重複:
How to save user-entered line breaks from a TEXTAREA to a database?HTML表單:提交文本輸入與換行符

我失去了一些簡單的解決方案在這裏 - 我創造了文字輸入的表單。我希望這個提交任何linebreaks。用戶實際上在textarea中寫入,在提交之前,javascript/jquery複製到隱藏文本輸入。

我已經看到了JavaScript替換/ n等解決方案的一些已知的突破字符。這是唯一的方法嗎?然後,我必須再次將它翻譯回服務器端。我真的很想將/ n提交爲/ n。

回答

3

您可以使用<textarea style="display:none;"></textarea>而不是隱藏的<input type="text">

+0

是的!謝謝。沒有意識到textarea可以提交一個表單。認爲它必須輸入。我給它一個名稱屬性,所以我可以抓住它(如此顯示) – user984003

+0

是的,表單將從'input','textarea','select'提交值,除非它們被禁用或者其他邊緣情況。http: //www.w3.org/TR/html401/interact/forms.html#successful-controls 一個有趣的技巧是添加多個提交按鈕併爲它們分配不同的值;單擊按鈕的值,但不是其他值提交按鈕,與表單數據一起發送。 – andytuba

2

當提交正常文本區的正常表單時,用戶輸入的任何換行符都將作爲數據的一部分進行傳輸。它們被標準化爲CR LF對。如果將textarea元素的值複製到隱藏字段,換行符將被保留。

所以問題在別處。可能您的服務器端表單處理程序不準備處理換行符。或者它可能以某種方式使用數據,從而使線條中斷失去意義,或者完全丟失。一個常見的新手錯誤是將從表單接收到的值寫入HTML文檔 - 儘管保留了換行符,但在HTML規則中,當它們出現在普通元素的內容中時,它們被視爲等價於空格(例如textareapre)。

自動創建的任何換行符默認情況下,由瀏覽器換行而不是由用戶操作導致換行。通常沒有理由讓它們保留,但是如果您希望這樣做,請使用textarea元素中的屬性wrap=hard。 (該屬性是非標準的,但廣泛支持。=