我有一个简单的文本区域,像这样的形式:

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink">
    <?php if($siteLink_val) echo $siteLink_val; ?> 
</textarea>

我一直在这个文本区域得到额外的空白。当我tab到它,我的光标就像在文本区域的中间,而不是在开始?怎么解释呢?


当前回答

仔细查看您的代码。其中,已经有三个换行符,在</textarea>之前有大量的空白。首先删除这些标签,这样标签之间就不再有换行符了。这可能已经奏效了。

其他回答

文本区域开始和结束标签之间的任何空格都将被视为空白。所以对于上面的代码,正确的方法是:

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php if($siteLink_val) echo $siteLink_val; ?></textarea>

如果您仍然喜欢使用缩进,请在打开<?PHP标签,如下所示:

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php // <--- newline
    if($siteLink_val) echo $siteLink_val; // <--- indented, newline
?></textarea>

我反对HTML代码与PHP代码混合。

但是试试这个:

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink">
<?php 
    if($siteLink_val) 
        echo trim($siteLink_val);
?> 
</textarea>

我也遇到了同样的问题,解决方法很简单:不要开始新的路线!虽然前面的一些答案可以解决这个问题,但其思想没有阐述清楚。 重要的理解是,为了消除意外的空格,永远不要在开始标记之后开始新行。

下面的方法是错误的,会在你的文本内容之前留下很多不必要的空格:

 <textarea>
    text content // start with a new line will leave a lot of unwanted spaces
 </textarea>

正确的做法是:

 <textarea>text content //put text content right after your start tag, no new line
 </textarea>

另一种方法是使用javascript:

//jquery
$('textarea#someid').html($('textarea#someid').html().trim());

//without jquery
document.getElementById('someid').innerHTML = document.getElementById('someid').innerHTML.trim();

这就是我所做的。删除代码中的空格和换行符会使行太长。