为什么文本区域充满神秘的空白?

我有一个简单的文本区域,它的形式如下:

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

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

209539 次浏览

好吧,在<textarea></textarea>之间的所有内容都被用作文本区域框的默认值。在你的例子中有一些空白。试着消除所有这些。

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

textarea标记的前后打开(并关闭!)你的PHP标记:

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

为了让它看起来更简洁,可以考虑使用三元操作符:

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

此外,当你说光标在文本区域的“中间”,这让我认为你也可以有额外的填充或text-align:中心定义在你的CSS某处。

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

但是试试这个:

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

首先确保你的$siteLink_val没有返回空白作为值。& lt; 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”并以“?>”结尾。

避免文本区域之间的换行,因为它可能会产生错误字符。

此外,检查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>
for line in lines:
echo line.replace('\n','\r')
endfor
</textarea>

它将打印没有额外空行的行 当然,这取决于你的行是否以'\n', '\r\n'或''结尾-请调整

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

另一种方法是使用javascript:

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


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

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

基本上应该是这样

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

如果有一些预定义的空间,让我们说由于代码格式如下

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

点所示的空格在每次提交时不断增加。

对我来说,一个有效的解决方案是向文本区域添加white-space: normal;样式,因为有时消除所有空白是不可行的(例如,当你希望你的代码遵守你的编码准则时,需要添加制表符,空格和换行符)

请注意文本区域的默认值,至少在chrome是: white-space: pre-wrap; < / p >
< p >简而言之: <textarea>应该立即在它开始的同一行上关闭

一般练习:将添加代码中用于缩进的换行符和空格。

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

正确的做法

<textarea id="sitelink" name="sitelink"></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>
<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>

我知道已经很晚了,但是我可以帮助别人。

在需要文档缩进时使用此选项。

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

同样的问题

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

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

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

简单地把所有这些放在一行

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

后:

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