У меня есть простая текстовая область в форме:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"> <?php if($siteLink_val) echo $siteLink_val; ?> </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><?=( $siteLink_val ? $siteLink_val : '' );?></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 trim($siteLink_val);?></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> <php? echo $var; ?> </textarea>
<textarea> <php? echo $var; ?> </textarea>
после удаления этих лишних пробелов между тегами решает проблему, как показано ниже. <textarea><php? echo $var; ?></textarea>
Одним из решений, которое сработало для меня, является добавление стиля white-space: normal;
в текстовое поле, потому что порой невозможно исключить все пробелы (например, если вы хотите, чтобы ваш код соответствовал вашим правилам кодирования, которые требуют добавления вкладок, пробелов и разрывов строк)
Обратите внимание, что значение по умолчанию для textarea, по крайней мере, в хроме: white-space: pre-wrap;
<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()); } ); });
тот же вопрос
Кроме того, когда вы говорите, что курсор находится в «середине» текстового поля, это заставляет меня думать, что вы также можете иметь дополнительное дополнение или выравнивание текста: центр, определенный где-то в вашем CSS.
Сначала убедитесь, что ваш $ 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 в текстовом поле, а затем задаете ширину и высоту. Эти правила являются контрпродуктивными и приведут к непоследовательным визуальным эффектам. Придерживайтесь либо определения размера по стилю (я рекомендую дать элементу класс), либо строки / столбцы.
Кроме того: тег textarea показывает пробелы для новых строк, вкладок и т. Д. В многострочном коде.
сохранить код textarea без дополнительных пробелов внутри
кроме того, если вы видите дополнительные пустые строки, есть решение в метаязыке:
<textarea> for line in lines: echo line.replace('\n','\r') endfor </textarea>
он будет печатать строки без дополнительных пустых строк, конечно, это зависит от того, будут ли ваши строки заканчиваться на «\ n», «\ r \ n» или «» – пожалуйста, приспособите
Если вы все еще хотите использовать отступы, сделайте это после открытия <?php
, например:
<textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php // <--- newline if($siteLink_val) echo $siteLink_val; // <--- indented, newline ?></textarea>
Элемент Html может быть открытым тегом и тегами закрытия
<textarea> ...Your code </textarea>
если вы хотите использовать один тег, используя <tagName/>