2012-01-08 81 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