왜 텍스트 영역에 신비한 공백이 가득합니까?


292

다음 과 같은 형식 의 간단한 텍스트 영역 이 있습니다.

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

텍스트 영역 에서 추가 공백이 계속 발생 합니다. 커서를 탭하면 커서가 텍스트 영역 의 중간과 같고 처음이 아닙니다. 설명은 무엇입니까?

답변:


484

코드를 자세히 살펴보십시오. 그 안에는 이미 세 줄의 줄 바꿈과 공백이 </textarea>있습니다. 태그 사이에 줄 바꿈이 없도록 더 이상 제거하십시오. 이미 트릭을 수행했을 수 있습니다.


4
@ user79685 환영합니다. 위의 새로운 의견을 읽으십시오. 난 당신을 조롱하지 않았습니다. 적어도 의미는 없습니다 :)
Pekka

9
음, 나는 그것에 동의하지 않습니다. 나는 온라인 토론에서 전술과 예절에 매우 관심이 있으며 SO에 대해 전반적으로 매우 친근한 분위기를 즐깁니다. 다른 한편으로, 그물 위에서 움직일 때 약간의 피부를 개발해야합니다.
Pekka

2
아주 좋아요 나는이 문제에 직면 해 있었고 텍스트 다듬기에서 'text-index'속성 적용 (css 사용) :-D :-D에 이르기까지 다른 모든 트릭을 시도했습니다. (어리석은 일). html :-? ... 코드를 들여 쓰기 때문에 문제가 발생했습니다. 감사합니다. 귀하의 답변이 저를 도와주었습니다. : :)
Gaurav Sharma

3
또한 value태그 안에 텍스트를 추가하는 대신 속성을 사용하십시오 .
João Cunha

2
옛날이지만 좋은 사람. 이것은 오늘 나를 도왔습니다. @Pekka 당신은 굉장합니다!
wordman

73

글쎄, <textarea>와 사이의 모든 것이 </textarea>텍스트 영역 상자의 기본값으로 사용됩니다. 귀하의 예에는 약간의 공백이 있습니다. 그 모든 것을 제거하십시오.


4
고마워 나는 그 사이의 모든 것이 기본값이라는 것을 몰랐다. 나는 그가 나를 조롱했지만 먼저 대답하기 때문에 맨 위에있는 사람을 선택했습니다. 사람들을 위해 튀어 나와 주셔서 감사합니다.
Afamee

2
간단 해. 고마워요!
Sergio Belevskij

56

열기 (닫습니다!) 직후에, 그리고 전에 PHP 태그, 당신의 textarea태그 :

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

4
이 경우에 들여 쓰기를 유지하는 영리한 방법입니다. 감사!
Sebastianb

이것은 마침내 내 문제를 해결했습니다. 감사합니다 바트
Stephen Kennedy

32

한마디로 : <textarea>시작한 동일한 줄에서 즉시 닫아야합니다.


일반적인 연습 : 코드의 들여 쓰기에 사용되는 줄 바꿈과 공백이 추가됩니다.

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

올바른 연습

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

내 문제를 해결했다.
S.M_Emamian 2016 년

이것은 나에게도 완벽한 솔루션이었습니다
Sheldon R.

내 문제를 해결하고 훌륭한 해결책. 감사합니다
Husnain Shabbir

26

기본적으로

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

사전 정의 된 공백이 있으면 아래와 같은 코드 형식으로 인해 말할 수 있습니다.

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

점으로 표시되는 공백은 각 제출마다 계속 추가됩니다.


이것은 때때로 잊혀진 오래된 "속임수"입니다. 우리는 이미 IE6 / 7로 돌아가는 HTML 문제를 가지고있었습니다. +1
JonSnow

내 하루를 구했다. 감사!
Reuel Ribeiro

잘 작동하지만 정말 재밌습니다. 이 이상한 버그에 대한 설명이 있습니까?
Aminu Kano

11

텍스트 영역 여는 태그와 닫는 태그 사이의 공백은 공백으로 간주됩니다. 위 코드의 경우 올바른 방법은 다음과 같습니다.

<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();

이것이 내가 한 일입니다. 코드에서 공백과 줄 바꿈을 제거하면 줄이 너무 길어집니다.


5

좀 더 깔끔하게 보이려면 삼항 연산자를 사용하는 것이 좋습니다.

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

2
짧은 태그를 사용하지 말고 다른 사람들에게 그렇게 제안하지 마십시오. 이를 통해 사람들은 다른 설정을 가진 프로덕션 서버에 일부 웹 응용 프로그램을 넣을 때 PITA를 피할 수 있습니다. 감사합니다.
Alfabravo

4
더 많은 사람들이 사용하기를 원하기 때문에 템플릿 시나리오에서 항상 짧은 태그를 정확하게 사용하므로 PHP 커뮤니티에서 계속 지원하도록 권장합니다. 즉, 짧은 태그는 템플릿 시나리오에서만 사용되어야하며 응용 프로그램 논리에서는 절대 사용해서는 안되며 서버에서 지원하는 경우에만 사용되어야합니다. 배포하기 전에 항상 프로덕션 환경을 알고 있어야합니다. (자연스럽게, 이것은 짧은 태그의 장단점을 논의하는 곳이 아니지만, 당신은 그것을 올렸습니다. 그래서 그것은 저의 정당화입니다.)
Brian Lacy

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

...> 아래로 이동하면 나를 위해 작동합니다.


4

나는 같은 문제를 겪었고 해결책은 매우 간단합니다. 새 줄을 시작하지 마십시오! 이전 답변 중 일부가 문제를 해결할 수 있지만 아이디어가 명확하게 설명되어 있지 않습니다. 중요한 이해, 당신의 시작 태그 후 새 줄을 시작 결코 의도하지 않은 공간을 없애는 것입니다.

다음과 같은 방법은 잘못 되었으며 텍스트 내용 앞에 원하지 않는 공간이 많이 남습니다.

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

3

다음에 줄 바꿈이나 공백이 없는지 확인하십시오. 공백이나 탭이 없는지 확인 하고이 코드를 복사하여 붙여 넣으십시오.)

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

2

또한 textarea 태그는 여러 줄 코드로 새 줄, 탭 등을위한 공간을 표시합니다.


2

추가 공백없이 텍스트 영역 코드 유지

또한 여분의 빈 줄이 있으면 메타 언어로 된 해결책이 있습니다.

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

추가 빈 줄없이 줄을 인쇄합니다. '\ n', '\ r \ n'또는 ''으로 끝나는 줄에 따라 다릅니다.


2

태그에 실제 공간이 있기 때문에 텍스트 영역에 신비한 공간이 표시됩니다. <textarea> <php? echo $var; ?> </textarea> 태그 사이에 여분의 공백을 제거한 후 다음과 같이 문제를 해결합니다. <textarea><php? echo $var; ?></textarea>


2

나를 위해 일한 한 가지 해결책 white-space: normal;은 때로는 모든 공백을 제거하는 것이 불가능하기 때문에 텍스트 영역에 스타일 을 추가하는 것입니다 (예 : 코드가 탭, 공백 및 줄 바꿈을 추가 해야하는 코딩 지침을 준수하려는 경우)

크롬에서 텍스트 영역의 기본값은 다음과 같습니다. white-space: pre-wrap;


2

여전히 들여 쓰기를 사용하려면 <?php태그를 연 후 다음 과 같이하십시오.

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

2

나는 늦었지만 다른 사람들을 도울 수 있습니다.

문서 들여 쓰기가 필요한 경우에 사용하십시오.

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

같은 질문


또는 HTML 형식을 올바르게 지정할 수 있습니다. 그러나 PHP 코드와 같은 것을 원한다면 어려울 수 있다는 데 동의합니다. 그래서 나는 당신의 대답에 동의합니다.
Niels Lucas

1

PHP 코드와 혼합 된 HTML 코드에 반대합니다.

그러나 이것을 시도하십시오 :

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

3
거의 ... 그것은 여전히 ​​두 개의 줄 바꿈을 포함합니다.
amarillion 2019

사용해야 <textarea style="width:350px; height:80px;" cols="42" rows="5" name="sitelink"><?php 하고 ?></textarea>그것이 진정으로 순수한 있는지 확인 할 수 있습니다. 또한 왜 PHP를 사용하여 HTML을 반대하는지 물어볼 수 있습니까?
FluorescentGreen

1

당신과 가까운 태그를 같은 줄에 정의하십시오.

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

0

또한 커서가 텍스트 영역의 "중간"에 있다고 말하면 CSS의 어딘가에 추가 패딩이나 텍스트 정렬 : 센터 가있을 수 있다고 생각합니다 .


0

먼저 $ 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를 확인하여 텍스트를 안쪽으로 밀어 넣는 패딩 규칙이 없는지 확인하십시오.

또한 텍스트 영역에 열 및 행 값을 지정한 다음 너비와 높이의 스타일을 지정합니다. 이러한 규칙은 비생산적이며 일관성이없는 시각적 결과를 초래합니다. 스타일을 통해 크기를 정의하거나 (요소에 클래스를 제공하는 것이 좋습니다) 행 / 열을 고수하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.