2013-08-26 2 views
1

텍스트 입력 (input type='text' 또는 textarea) 위에 맞춤 자리 표시 자 텍스트 요소를 배치하고 싶습니다. 그러나 자리 표시 자 텍스트 요소가 바로 위에있을 때 텍스트 입력을 클릭 가능하게 만드는 방법을 알아낼 수 없습니다. 자리 표시 자를 클릭 취소 할 수 없도록 설정하려면 pointer-events:none을 설정해야하지만 이전 버전의 IE에서는 지원되지 않습니다.포인터 이벤트가 발생하지 않는 클릭 방지 : 없음

대체로 pointer-events:none에 대한 대안으로는 자식 요소의 onclick을 수동으로 트리거해야합니다. 그러나 텍스트 입력의 경우 onclick은 브라우저에서 암시 적으로 수행되므로 트리거 할 이벤트가 없습니다.

다른 해결책 텍스트 입력에 초점을 맞추기 위해 자리 표시 자에 onclick을 설정하는 것도 고려했지만 커서가 항상 입력의 끝에 배치됩니다. 텍스트 입력을 클릭하고 커서를 클릭 한 위치에 표시 할 수있게하려고합니다.

다른 옵션은 z-index을 사용하여 입력 아래에 자리 표시자를 배치 한 다음 입력을 투명하게 만드는 것입니다. 그러나 이것은 또한 입력의 기본 테두리를 제거하므로 바람직하지 않습니다.

HTML/CSS와 순수한 자바 스크립트 (jquery가 아님) 만 사용하여 텍스트가 위에 표시되는 경우에도 텍스트 입력을 클릭 할 수 있습니까?

+2

오버레이를 숨기는 것이 쉽습니다. 전체 텍스트를 쉽게 선택할 수 있습니다. 텍스트 상자 내부의 좌표를 파악하고 텍스트를 그 안에있는 텍스트에 매핑하고 거기에 커서를 놓으면 .... 흠 .. 힘든 문제입니다. –

+0

나는 당신이 성취하려는 것을 이해하는 데 어려움을 겪고 있습니다. '바로 위에'라고 말하면, 그 바로 앞에있는 것을 의미합니까, 아니면 텍스트 위에 입력 내용이 보이지 않도록 텍스트 위에 입력 텍스트를 렌더링하고 있습니까? – Gerald

+0

나는 '

답변

4

자바 스크립트 없이도이 작업을 수행 할 수 있습니다. 다만이 같은 <label> 태그 사용 : 라벨에 클릭 forid 속성을 사용하여

<label class="placeholder" for="name">Name</label> 
<input type="text" id="name"> 

를, 브라우저는 링크 된 양식 필드에 포커스를 전환됩니다. 그런 다음 JavaScript의 focus 이벤트를 수신하여 자리 표시자를 숨길 수 있습니다. 자리 표시 자 레이블의 스타일을 지정하여 position: absolute을 사용해야합니다. live example (양식을 보려면 아래로 스크롤)을 참조하십시오.

자리 표시 자 텍스트를 정의하는 위의 방법은 몇 가지 장점이 있습니다

  1. 당신은 실제로 필드에 대한 레이블을 정의합니다. 이것은 아마도 접근성을 도울 수 있습니다.
  2. 양식 필드의 값과 자리 표시 자 텍스트를 분리하므로 부분적으로 채워진 양식을 지원할 수 있습니다.
  3. placeholder 특성을 사용하는 것보다 더 많은 브라우저를 지원할 수 있습니다.
  4. label 태그를 사용자가 원하는대로 스타일을 지정할 수 있습니다. placeholder 속성은 그렇게 쉬운 방법이 아닙니다. CSS 또는 JS 애니메이션을 사용할 수도 있습니다!
+0

이것은 텍스트 입력의 초점을 직접 설정하는 것과 같은 문제가 있습니다. 커서가 어디로 갈지 선택할 수 없습니다.그렇지 않으면 좋은 해결책이지만, 내가 찾던 것이 아닙니다. –

+0

자리 표시자는 초기 양식 필드 값으로 사용되지 않지만 힌트입니다. 그들은 보통 초점을 잃거나 사용자가 첫 번째 문자를 필드에 입력 할 때 사라집니다. – HankMoody

+0

예, 이미 텍스트 단락이있는 경우 중간에 클릭하여 입력 할 수 없습니다. 클릭하면 요소의 유형에 따라 텍스트의 시작 또는 끝 부분에 커서가 놓입니다. –

관련 문제