2012-01-08 56 views
2

我試圖使用Chrome和Safari將數據輸入到我的mysql數據庫時遇到了一些麻煩。當我從這些瀏覽器輸入數據時,發送到數據庫的數據會顯示textarea字段邊緣的位置。因此,有一條長長的文本被打破了幾行。Chrome和Safari中的Textarea,發送到服務器的所有可見換行符

我運行stripslashesstrip_tags當數據進入數據庫的。它在FF & IE中正常工作。

請參閱下文,明白我的意思:

文本輸入字段:
http://www.redcontour.com/query/textarea_field.png

鉻& Safari瀏覽器DB條目:
http://redcontour.com/query/Chrome_Safari_db_data.png

FF & IE DB條目:
http://redcontour.com/query/FF_IE_data.png

這樣做的問題是,我並不總是將數據用於與最初放入的textarea盒子類似寬度的div中,因此它看起來很奇怪沒有運行div整個寬度的數據。

任何想法?

POST UPDATED - 下面是在數據被髮送到數據庫之前的驗證,上面的例子是我輸入的數據,在瀏覽器的兩個實驗中我都沒有做過任何不同的事情,所以我沒有不知道鏈接斷開如何進入。

// Create a function for escaping the data. 
function escape_data ($data) { 
    global $dbc; // Need the connection. 
    if (ini_get('magic_quotes_gpc')) { 
     $data = stripslashes($data); 
    } 
    return mysql_real_escape_string($data, $dbc); 
} // End of function. 

// Check for about. 
if (empty($_POST['about'])) { 
    $a = FALSE; 
    $message .= '<p>About you description missing.</p>'; 
} else { 
    $a = escape_data(strip_tags($_POST['about'])); 
} 

用於輸入數據的HTML代碼。

<textarea class="ed_text_box" name="about" wrap="physical" rows="5" onKeyDown="textCounter(document.details.about,document.details.ed_text_box,500)" onKeyUp="textCounter(document.details.about,document.details.ed_text_box,500)">I'm a traveller at heart, having lived in Portugal and England. Love camping and getting away from it all, whether it's walking the Cornish coast or canoeing in the Brecon Beacons.</textarea> 

文本計數器只是停止用戶把太多的副本放到字段中,我沒有測試它,我得到了同樣的問題。 CSS也在下面,所以所有的信息都可以在這篇文章中找到。

.ed_text_box {width:394px; border:1px solid #CCCCCC; padding:2px 2px 2px 2px; margin:0 0 20px 0; font-size:12px; font-family:Verdana, Arial, SunSans-Regular, Sans-Serif; font-weight:normal; color:#564b47;} 

任何幫助非常感謝。

+0

1)如果這是您所關心的問題,請嘗試並避免使用單間隔字體(如第二張圖像中的文本)。 2)有沒有任何' 泄漏在那裏? ' '是一個非破壞空間,一些瀏覽器可能會將它視爲不會中斷的內容,因此與它們分離的多個單詞可能會換行到下一行。 – DaveRandom 2012-01-08 16:54:46

+0

還有其他事情正在發生。你的問題是文本中有換行符。我認爲它們不太可能被Chrome/Safari添加。用戶輸入它們的可能性更大,或者您的代碼以某種方式添加了它們。你能證實這一點並更新你的問題嗎? – 2012-01-08 16:59:18

+0

我已經更新了一些信息。這發生在網站上的所有textareas上,儘管它們都使用相同的代碼結構。 – 2012-01-08 17:16:11

回答

2

最有可能這些瀏覽器迴應的<textarea />wrap="physical"屬性。根據THIS該屬性是特定於IE的並且對應於wrap="hard",這意味着向用戶可見的換行符包含在發送到服務器的數據中。你想要的是wrap="soft"行爲,我可以肯定它是所有瀏覽器的默認行爲 - 所以不需要指定它。

誠然既不鉻也不是Safari瀏覽器IE和你注意IE工作正常,但我懷疑這是你的問題不少。

+0

我剛剛將所有'wrap =「physical」'換成'wrap =「soft」',這看起來起作用了。終於到了那裏,再次感謝您的幫助。對於其他任何人的FYI這篇文章與此鏈接上的前一篇有關[link](http://stackoverflow.com/questions/1170667/google-chrome-textareas-wrapping-and-adding-line-breaks-help) – 2012-01-09 00:01:17