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