Почему текстовое пространство заполнено таинственными белыми пространствами?

У меня есть простая текстовая область в форме, подобной этой:

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

Я продолжаю получать лишнее пространство в этой textarea. Когда я вставляю в него мой курсор, как в середине textarea, а не в начале? Какое объяснение?

Ответ 1

Посмотрите внимательно на свой код. В нем уже есть три разрыва строки и тонна пробела перед </textarea>. Сначала удалите их, чтобы больше не было разрывов строк между тегами. Возможно, это уже трюк.

Ответ 2

Ну, все между <textarea> и </textarea> используется как значение по умолчанию для вашего поля textarea. В вашем примере есть пробелы. Попытайтесь устранить все это.

Ответ 3

Откройте (и закройте!) ваши теги PHP сразу после и перед тегами textarea:

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

Ответ 4

В основном это должно быть

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

Если есть некоторые предопределенные пробелы, скажем, из-за форматирования кода, как показано ниже

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

Пространства, показанные точками, продолжают добавляться к каждой отправке.

Ответ 5

Вкратце: <textarea> должен быть немедленно закрыт в той же строке, где он начинался.


Общая практика: это приведет к разрыву строк и пробелов, используемых для отступов в коде.

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

Правильная практика

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

Ответ 6

Любое пространство между тегами открытия и закрытия textarea будет считаться пробелом. Итак, для вашего вышеуказанного кода правильный путь будет:

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

Ответ 7

Другая работа вокруг будет заключаться в использовании javascript:

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

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

Это то, что я сделал. Удаление пробелов и разрывов строк в коде делает линию слишком длинной.

Ответ 8

Чтобы сделать его немного более чистым, рассмотрите использование тернарного оператора:

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

Ответ 9

Я знаю его поздно, но могу помочь другим.

используйте это, когда требуется отступ документа.

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

тот же вопрос

Ответ 10

Пожалуйста, убедитесь, что после этого не происходит разбиения строк или пробела, чтобы убедиться, что нет пробелов или вкладок, просто скопируйте и вставьте этот код:) Я исправил его для вас

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

Ответ 11

В области текста отображаются таинственные пробелы, поскольку в тегах существует реальное пространство. <textarea> <php? echo $var; ?> </textarea> после удаления этих лишних пробелов между тегами будет решена проблема, как показано ниже. <textarea><php? echo $var; ?></textarea>

Ответ 12

Одним из решений, которое сработало для меня, является добавление стиля white-space: normal; в текстовое поле, потому что иногда невозможно исключить все пробелы (например, если вы хотите, чтобы ваш код соответствовал вашим правилам кодирования, которые требуют добавления вкладок, пробелы и разрывы строк)

Обратите внимание, что по умолчанию для textarea, по крайней мере, в хром: white-space: pre-wrap;

Ответ 13

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

Перемещение... > вниз работает для меня.

Ответ 14

Я против HTML-кода, смешанного с PHP-кодом.

Однако попробуйте следующее:

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

Ответ 15

Кроме того: тег textarea показывает пробелы для новых строк, вкладок и т.д. в многострочном коде.

Ответ 16

сохранить код textarea без дополнительных пробелов внутри

Кроме того, если вы видите дополнительные пустые строки в метаязыке есть решение:

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

он будет печатать строки без дополнительных пустых строк конечно, это зависит от того, будут ли ваши строки заканчиваться на "\n", "\ r\n" или "" - пожалуйста, адаптируйте

Ответ 17

Если вы все еще хотите использовать отступы, сделайте это после открытия тега <?php, например:

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

Ответ 18

Кроме того, когда вы говорите, что курсор находится в "середине" текстового поля, это заставляет меня думать, что вы также можете иметь дополнительное дополнение или text-align: center, определенную где-то в вашем CSS.

Ответ 19

Сначала убедитесь, что ваш $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 в текстовом поле, а затем задаете ширину и высоту. Эти правила являются контрпродуктивными и приведут к непоследовательным визуальным эффектам. Придерживайтесь либо определения размера по стилю (я рекомендую дать элемент классу), либо строки/столбцы.

Ответ 20

У меня та же проблема, и решение очень простое: не начинайте новую строку! Хотя некоторые из предыдущих ответов могут решить проблему, идея четко не сформулирована. Важно понимать, что, чтобы избавиться от непреднамеренных пробелов, никогда не начинайте новую строку сразу после вашего начального тега.

Следующий путь НЕПРАВИЛЬНЫЙ и оставит много нежелательных пробелов перед вашим текстовым контентом:

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

Ответ 21

Просто определите ваш и ваш закрывающий тег в одной строке.

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

Ответ 22

Элемент Html может быть открыт и теги тегов

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

если вы хотите использовать один тег, используя <tagName/>