2013-05-29 23 views
1

我有一個非常簡單的html/php代碼。它只有一個textarea和一個發送按鈕。HTML發佈刪除換行符

在textarea中,我有一個文本,在文本的開頭有3個新行。我需要這些換行符。

之後,當我提交表單時,出於某種原因,它在文本開始時的換行符是1。當我再次發送它時,它會再次執行,刪除換行符,而內容的開頭不是文本。

爲什麼會發生? 我用FF,Chrome,Safari,Oprea,IE試用過它,結果相同。

您可以使用此代碼測試:

<?php 
if (empty($_POST["operation"])) { 
    //Init the textarea value if form not submitted 
    $_POST["message"] = "\r\n\r\n\r\nThis is\r\na multiline text"; 
} 
?> 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Multiline test</title> 
    <meta charset="UTF-8" /> 
</head> 
<body> 
    <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> 
    <textarea style="width: 200px; height: 150px;" name="message"><?php echo $_POST["message"]; ?></textarea> 
    <input type="submit" value="send" /> 
    <input type="hidden" name="operation" value="send" /> 
    </form> 
</body> 

+0

您應該儘可能考慮使用CSS來定位消息。這可能也會更容易。 – suspectus

+0

當換行符之前的第一個字符是f.e時,它不會發生。空間。我不知道爲什麼會發生這種情況,並且在快速瀏覽後無法在HTML規範中找到任何信息。你可以通過編寫你的PHP echo語句來填充textarea到下一行的開頭來防止這種情況。 – CBroe

+0

css不是一個選項。這是一個模塊,當你想回復一條消息。我想添加3個新行來分隔引用的消息。 – vaso123

回答

2

瀏覽器忽略<textarea>標籤中的第一個和最後一個換行符。這是因爲,如果你不希望任何多餘的,如果你寫這樣的HTML打破:

<textarea> 
Textarea content, all in one line. 
</textarea> 

在這種情況下,簡單的解決辦法是打印textarea的內容之前,只需要添加一個換行符。

<textarea style="width: 200px; height: 150px;" name="message"> 
<?php echo $_POST["message"]; ?> 
</textarea> 

另請注意,您並不需要\r\n。只需\n就夠了。