У меня есть простая текстовая область в форме, подобной этой:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink">
<?php if($siteLink_val) echo $siteLink_val; ?>
</textarea>
Я продолжаю получать лишнее пространство в этой textarea. Когда я вставляю в него мой курсор, как в середине textarea, а не в начале? Какое объяснение?
Посмотрите внимательно на свой код. В нем уже есть три разрыва строки и тонна пробела перед </textarea>
. Сначала удалите их, чтобы больше не было разрывов строк между тегами. Возможно, это уже трюк.
Ну, все между <textarea>
и </textarea>
используется как значение по умолчанию для вашего поля textarea. В вашем примере есть пробелы. Попытайтесь устранить все это.
Откройте (и закройте!) ваши теги PHP сразу после и перед тегами textarea
:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php
if($siteLink_val) echo $siteLink_val;
?></textarea>
В основном это должно быть
<textarea>something here with no spaces in the begining</textarea>
Если есть некоторые предопределенные пробелы, скажем, из-за форматирования кода, как показано ниже
<textarea>.......
....some_variable
</textarea>
Пространства, показанные точками, продолжают добавляться к каждой отправке.
Вкратце:
<textarea>
должен быть немедленно закрыт в той же строке, где он начинался.
Общая практика: это приведет к разрыву строк и пробелов, используемых для отступов в коде.
<textarea id="sitelink" name="sitelink">
</textarea>
Правильная практика
<textarea id="sitelink" name="sitelink"></textarea>
Другая работа вокруг будет заключаться в использовании javascript:
//jquery
$('textarea#someid').html($('textarea#someid').html().trim());
//without jquery
document.getElementById('someid').innerHTML = document.getElementById('someid').innerHTML.trim();
Это то, что я сделал. Удаление пробелов и разрывов строк в коде делает линию слишком длинной.
Любое пространство между тегами открытия и закрытия textarea будет считаться пробелом. Итак, для вашего вышеуказанного кода правильный путь будет:
<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>
Пожалуйста, убедитесь, что после этого не происходит разбиения строк или пробела, чтобы убедиться, что нет пробелов или вкладок, просто скопируйте и вставьте этот код:) Я исправил его для вас
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php if($siteLink_val) echo trim($siteLink_val);?></textarea>
Я знаю его поздно, но могу помочь другим.
используйте это, когда требуется отступ документа.
$('document').ready(function()
{
$('textarea').each(function(){
$(this).val($(this).val().trim());
}
);
});
<textarea style="width:350px;
height:80px;" cols="42" rows="5" name="sitelink"
><?php if($siteLink_val) echo $siteLink_val; ?></textarea>
Перемещение... > вниз работает для меня.
Одним из решений, которое сработало для меня, является добавление стиля white-space: normal;
в текстовое поле, потому что иногда невозможно исключить все пробелы (например, если вы хотите, чтобы ваш код соответствовал вашим правилам кодирования, которые требуют добавления вкладок, пробелы и разрывы строк)
Обратите внимание, что по умолчанию для textarea, по крайней мере, в хром:
white-space: pre-wrap;
В области текста отображаются таинственные пробелы, поскольку в тегах существует реальное пространство. <textarea> <php? echo $var; ?> </textarea>
после удаления этих лишних пробелов между тегами будет решена проблема, как показано ниже. <textarea><php? echo $var; ?></textarea>
Я против HTML-кода, смешанного с PHP-кодом.
Однако попробуйте следующее:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink">
<?php
if($siteLink_val)
echo trim($siteLink_val);
?>
</textarea>
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php
and ?></textarea>
чтобы убедиться, что он действительно чистый. Кроме того, могу ли я спросить, почему вы против HTML с PHP?
Если вы все еще хотите использовать отступы, сделайте это после открытия тега <?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 без дополнительных пробелов внутри
Кроме того, если вы видите дополнительные пустые строки в метаязыке есть решение:
<textarea>
for line in lines:
echo line.replace('\n','\r')
endfor
</textarea>
он будет печатать строки без дополнительных пустых строк конечно, это зависит от того, будут ли ваши строки заканчиваться на "\n", "\ r\n" или "" - пожалуйста, адаптируйте
Кроме того: тег textarea показывает пробелы для новых строк, вкладок и т.д. в многострочном коде.
Сначала убедитесь, что ваш $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, чтобы убедиться, что нет правила заполнения, вставляющего текст внутрь.
Кроме того, вы указываете значение cols и rows в текстовом поле, а затем задаете ширину и высоту. Эти правила являются контрпродуктивными и приведут к непоследовательным визуальным эффектам. Придерживайтесь либо определения размера по стилю (я рекомендую дать элемент классу), либо строки/столбцы.
Кроме того, когда вы говорите, что курсор находится в "середине" текстового поля, это заставляет меня думать, что вы также можете иметь дополнительное дополнение или text-align: center, определенную где-то в вашем CSS.
Элемент Html может быть открыт и теги тегов
<textarea>
...Your code
</textarea>
если вы хотите использовать один тег, используя <tagName/>