Почему текстовая область заполнена таинственными пробелами? - PullRequest
241 голосов
/ 04 февраля 2010

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

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

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

Ответы [ 22 ]

415 голосов
/ 04 февраля 2010

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

60 голосов
/ 04 февраля 2010

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

49 голосов
/ 04 февраля 2010

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

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php
  if($siteLink_val) echo $siteLink_val;
?></textarea>
24 голосов
/ 28 марта 2014

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

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

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

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

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

21 голосов
/ 05 декабря 2015

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


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

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

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

<textarea id="sitelink" name="sitelink"></textarea>
8 голосов
/ 02 декабря 2016

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

<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php if($siteLink_val) echo $siteLink_val; ?></textarea>
7 голосов
/ 31 октября 2013

Еще один обходной путь - использование javascript:

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

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

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

4 голосов
/ 04 февраля 2010

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

<textarea><?=( $siteLink_val ? $siteLink_val : '' );?></textarea>
3 голосов
/ 27 июня 2017

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

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

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

тот же вопрос

2 голосов
/ 16 октября 2014

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...