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

Php 为什么文本区域充满神秘的空白?,php,html,forms,textarea,Php,Html,Forms,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
标记之后和之前打开(并关闭!)PHP标记:

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


> p>为了使它看起来更干净,请考虑使用三元运算符:

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


此外,当你说光标位于文本区域的“中间”时,我认为你也可以在CSS中的某个地方定义额外的填充或文本对齐:居中。

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

但是,请尝试以下方法:

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

     else {
          return "";
     }
}

$output_siteLink_val = build_siteLink_val();

首先确保$siteLink\u值没有返回空白值。默认情况下,元素有一个空值,因此,如果出于某种原因要回显的变量有空格,那么问题马上就来了

为了使代码绝对干净,我建议您可以这样做,允许以后有更多的灵活性。我做了一个函数,如果变量不存在(你在原始帖子中的目标是什么),则返回NULL,否则返回绝对值。确定变量的内容后,请尝试以下操作:

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink">
<?php 
    if($siteLink_val) 
        echo trim($siteLink_val);
?> 
</textarea>
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代码前面加上“”

避免在的之间换行,因为这可能会产生错误字符

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


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

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

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


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

保留textarea代码,不在其中添加空格

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

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

对于行中的行:
回显行。替换('\n','\r'))
外循环
它将打印没有额外空行的行
当然,这取决于您的行是否以“\n”、“\r\n”或“”结尾-请调整

文本区域显示神秘的空格,因为标记中存在真实的空格<代码>

删除标记之间的这些额外空格后,将解决问题,如下所示<代码>

另一个解决方法是使用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>
。。。。。。。
…某个变量

点显示的空格在每次提交时都会不断添加。

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

请注意,至少在chrome中,textarea的默认值为:
空白:预换行

简而言之:
应立即在其开始的同一行上关闭


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

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

正确练习

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

如果您仍然喜欢使用缩进,请在打开



搬家对我来说很有用

>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>
text content//将文本内容放在开始标记的后面,无新行

只需在同一行中定义您和您的结束标记

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

只需将所有内容放在一行

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

非常感谢。我没有意识到中间的一切都是默认的。我选择了最上面的那个人,因为他先回答了问题,尽管他没有回答