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

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

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


当前回答

首先确保你的$siteLink_val没有返回空白作为值。<textarea>元素默认有一个空值,所以如果你的变量由于某种原因有空格,有你的问题马上。

为了使代码绝对干净,我建议您可以这样做,允许以后有更大的灵活性。我已经做了一个函数,返回一个NULL,如果变量不存在(你似乎是在原来的帖子的目标)和绝对值。一旦你确定了变量的内容,试试这个:

function build_siteLink_val() {
     if ( $siteLink_val ) {
          return $siteLink_val;
     }

     else {
          return "";
     }
}

$output_siteLink_val = build_siteLink_val();

下面的代码在你的文本区域现在会读:

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?=$output_siteLink_val?></textarea>

这是假设您的PHP安装配置为简短变量调用,如缩短的“<?=?”>”标签。如果不能以这种方式输出,请记住在PHP代码前面加上“<?”Php”并以“?>”结束。

避免在<textarea>之间换行,因为它可能会产生错误字符。

此外,检查CSS以确保没有将文本向内推的填充规则。

此外,您还可以在textarea上指定cols和rows值,然后设置宽度和高度。这些规则会适得其反,导致视觉效果不一致。坚持通过样式定义大小(我建议给元素一个类)或行/cols。

其他回答

请确保后面没有换行符或空格,这是为了确保没有空格或制表符,只需复制并粘贴此代码:)我已经为您修复了它

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

仔细查看您的代码。其中,已经有三个换行符,在</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>

只需要在同一行中定义你的和你的close标记。

<textarea class="form-control"
          id="newText"
          rows="6"
          placeholder="Your placeholder here..."
          required
          name="newText"></textarea>

另一种方法是使用javascript:

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

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

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