为什么textarea充满了神秘的白色空间?

时间:2010-02-04 20:35:34

标签: php html forms textarea

我有一个简单的text area,形式如下:

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

我在 textarea 中不断获得额外的空白区域。当我选中它时,我的光标就像在 textarea 的中间而不是在开头?解释是什么?

24 个答案:

答案 0 :(得分:414)

仔细查看您的代码。其中,已有三个换行符,</textarea>之前有一大堆空格。首先删除它们,以便标签之间不再有换行符。它可能已经成功了。

答案 1 :(得分:60)

好吧,<textarea></textarea>之间的所有内容都用作textarea框的默认值。你的例子中有一些空白。尽量消除所有这些。

答案 2 :(得分:49)

在您的textarea代码之后和之前打开(并关闭!)您的PHP代码:

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

答案 3 :(得分:24)

基本上它应该是

<textarea>something here with no spaces in the begining</textarea>

如果有一些预定义的空格,可以说是由于下面的代码格式化

<textarea>.......
....some_variable
</textarea>

点上显示的空格会在每次提交时继续添加。

答案 4 :(得分:21)

简而言之: <textarea>应立即在它开始的同一行关闭。

一般做法:这将在代码中添加用于缩进的换行符和空格。

<textarea id="sitelink" name="sitelink">
</textarea>

正确练习

<textarea id="sitelink" name="sitelink"></textarea>

答案 5 :(得分:8)

textarea openning和closing标签之间的任何空格都将被视为空格。因此,对于上面的代码,正确的方法是:

 var mainArr = [String]()
 var sortedArr = [String]()
 var arrToReturn : [String] {
    if segmentedController.selectedIndex == 0 {
        return mainArr
    }
    else {
        return sortedArr
    }
}

答案 6 :(得分:7)

另一种解决方法是使用javascript:

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

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

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

答案 7 :(得分:4)

为了使它看起来更清洁,请考虑使用三元运算符:

<textarea><?=( $siteLink_val ? $siteLink_val : '' );?></textarea>

答案 8 :(得分:3)

我知道它很晚但可能会帮助别人。

在需要文档缩进时使用它。

$('document').ready(function()
{
    $('textarea').each(function(){
            $(this).val($(this).val().trim());
        }
    );
});

same question

答案 9 :(得分:2)

请确保之后没有换行符或空格,以确保没有空格或标签,只需复制并粘贴此代码:)我已经为您修复了

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

答案 10 :(得分:2)

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array( 
    'posts_per_page' => 3, 
    'paged' => $paged,
    'meta_key'    => '_customer_user',
  'meta_value'  => get_current_user_id(),
  'post_type'   => wc_get_order_types(),
  'post_status' => array ('wc-pending'),
);

$customer_waiting_orders = new WP_Query( $args );

if ( $customer_available_orders->have_posts() ) :

  while ( $customer_available_orders->have_posts() ) : $customer_available_orders->the_post();

    //code here    
    wp_reset_postdata();

  endwhile;

endif;

移动...&gt;对我有用。

答案 11 :(得分:2)

文本区域显示神秘空间,因为标签中存在真实空间。 <textarea> <php? echo $var; ?> </textarea> 删除标签之间的这些额外空格后将解决问题,如下所示。 <textarea><php? echo $var; ?></textarea>

答案 12 :(得分:2)

一个对我有用的解决方案是将样式white-space: normal;添加到textarea中,因为有时消除所有空格是不可行的(例如,当您希望代码遵守您需要的编码指南时)添加制表符,空格和换行符)

请注意textarea的默认值,至少在chrome中是: white-space: pre-wrap;

答案 13 :(得分:1)

我反对混合了PHP代码的HTML代码。

然而试试这个:

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

答案 14 :(得分:1)

如果您仍想使用缩进,请在打开<?php标记后执行此操作,如下所示:

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

答案 15 :(得分:1)

保留textarea代码,

内没有额外的空格

此外,如果你看到额外的空白行 元语言有解决方案:

<textarea>
for line in lines:
echo line.replace('\n','\r')
endfor
</textarea>

它将打印行而不添加空行 当然,这取决于你的行以'\ n','\ r \ n'或''结尾 - 请适应

答案 16 :(得分:1)

此外:textarea标签在多行代码中显示新行,制表符等的空格。

答案 17 :(得分:0)

首先确保$ siteLink_val没有将空格作为值返回。 &lt; textarea&gt;默认情况下,element有一个空值,所以如果你因为某些原因而回显的变量有空格,那么就是你的问题。

为了使代码绝对最干净,我建议你可以做这样的事情,以后可以提供更多的灵活性。我已经创建了一个函数,如果变量不存在(在原始帖子中似乎是针对的那个),则返回NULL,否则返回绝对值。一旦确定了变量的内容,请尝试以下方法:

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

     else {
          return "";
     }
}

$output_siteLink_val = build_siteLink_val();

现在,您的textarea中的以下代码将为:

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

这假设您的PHP安装配置为短手可变调用,如缩写为“&lt;?=?&gt;”中所示标签。如果您无法以这种方式输出,请记住在PHP代码前面加上“&lt;?php”并用“?&gt;”结束。

避免&lt; textarea&gt;之间的换行符,因为它可能会产生错误字符的可能性。

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

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

答案 18 :(得分:0)

另外,当你说光标位于textarea的“中间”时,它让我觉得你也可以在CSS的某处定义额外的填充或 text-align:center

答案 19 :(得分:0)

我遇到了同样的问题,解决方案非常简单:不要重新开始!尽管先前的某些答案可以解决问题,但是这个想法并不清楚。 重要的理解是,要摆脱不必要的空格,请不要在开始标记之后立即开始新行。以下内容将在文本内容之前留下很多不必要的空格:

 <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>

答案 20 :(得分:0)

只需在同一行中定义您和您的关闭标签即可。

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

答案 21 :(得分:0)

只需将所有内容放在一行

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

答案 22 :(得分:0)

除此之外:

之前:

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

之后:

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

我也加了PHP的trim()方法:

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

答案 23 :(得分:-4)

Html元素可能是开放标签和关闭标签

<textarea>
...Your code
</textarea>

如果您想使用<tagName/>

使用一个代码