비어있을 때 HTML 텍스트 상자에 힌트를 표시하려면 어떻게해야합니까?


210

웹 페이지의 검색 창에 "검색"이라는 단어가 회색 기울임 꼴로 표시되기를 원합니다. 상자에 초점이 도착하면 빈 텍스트 상자처럼 보입니다. 텍스트가 이미 있으면 텍스트를 정상적으로 표시해야합니다 (검정, 비 이탈리아어). 라벨을 제거하면 혼란을 피할 수 있습니다.

BTW, 이것은 페이지상의 Ajax 검색이므로 버튼이 없습니다.


4
질문이 있기 때문에 모든 브라우저에서 HTML5 자리 표시 자 속성이 지원됩니다.
— Jasen

안녕 마이클 이 페이지에서 허용되는 답변을 기꺼이 바꾸시겠습니까? 분명한 승자가있는 것으로 보이며, 이는 정답과 다릅니다.
— null

JavaScript 솔루션의 문제점은 모든 사람이 JavaScript를 설정하지 않았다는 것입니다. NoScript와 같은 브라우저 플러그인 (개발자가 설치하기 매우 편리함)을 사용하는 경우 텍스트 상자에 포커스가있을 때 자리 표시자가 사라지지 않습니다. 자리 표시 자 옵션이 가장 강력한 솔루션입니다.
— Sablefoste

답변:


365

최신 브라우저에서만이 기능을 사용할 수있는 다른 옵션은 HTML 5의 자리 표시 자 속성이 제공하는 지원을 사용하는 것입니다.

<input name="email" placeholder="Email Address">

스타일이 없으면 Chrome에서 다음과 같이 보입니다.

여기에 이미지 설명을 입력하십시오

당신은 밖으로 데모를 시도 할 수 있습니다 여기에 와있는 CSS와 HTML5 자리 표시 자 스타일링 .

이 기능 의 브라우저 호환성 을 확인하십시오 . Firefox 지원은 3.7에서 추가되었습니다. 크롬은 괜찮습니다. Internet Explorer는 10에서만 지원을 추가했습니다. 입력 자리 표시자를 지원하지 않는 브라우저를 대상으로하는 경우 jQuery HTML5 자리 표시 자라는 jQuery 플러그인 을 사용하고 다음 JavaScript 코드를 추가하여 활성화 할 수 있습니다.

$('input[placeholder], textarea[placeholder]').placeholder();

@Duke, Fx3.7 +, (Safari / Chrome) 및 Opera에서 작동합니다. IE9는 그것을 지원하지 않으므로 IE8도 지원하지 않습니다.
— Alessandro Vermeulen

네, 오늘 FF3.6이 지원하지 않는다는 것을 알게되었습니다.
— Drew Noakes

다시 움직 였다고 생각합니다. 나는 여기에서 그것을 발견했다 : github.com/mathiasbynens/jquery-placeholder
— jocull

주의 사항 개발자 "Internet Explorer 10 및 11은 필드가 비어 있어도 필드에 포커스가있을 때 자리 표시자를 표시하지 않습니다."
— 대령 패닉

92

이를 텍스트 상자 워터 마크라고하며 JavaScript를 통해 수행됩니다.

또는 jQuery를 사용하는 경우 훨씬 더 나은 방법입니다.


4
두 번째 링크가 끊어졌습니다. 이 유사 할 수 있습니다 digitalbush.com/projects/watermark-input-plugin
— 마이클 하렌

14
다른 jQuery 접근 방식을 찾았습니다. 이 프로젝트는 @ code.google.com/p/jquery-watermark에서
— JP Hellemons

4
디지털 브러시 플러그인은 '워터 마크'를 데이터베이스에 저장합니다. 베타 버전이며 2007 년 이후 업데이트되지 않았습니다. 대신 @JP가 제안한대로 code.google.com/p/jquery-watermark 를 사용하는 것이 좋습니다 .
— Kimball Robinson

1
나는 질문의 저자가 돌아가서 @JP 의견을 가장 좋은 답변으로 표시해야한다고 생각합니다.
— 랜디 L

2
jQuery 워터 마크 플러그인은 입력이 미리 채워진 값과 같은 경우를 처리하지 않기 때문에 꽤 멍청합니다. 이 경우 입력 텍스트를 다시 회색으로 만듭니다!
— atp

41

HTML 의 속성 을 사용 하여 자리 표시자를 설정할 수 있습니다 ( 브라우저 지원 ). 와는 할 수 CSS로 변경 (브라우저 지원이 제한되어 있지만).placeholderfont-stylecolor

input[type=search]::-webkit-input-placeholder { /* Safari, Chrome(, Opera?) */
 color:gray;
 font-style:italic;
}
input[type=search]:-moz-placeholder { /* Firefox 18- */
 color:gray;
 font-style:italic;
}
input[type=search]::-moz-placeholder { /* Firefox 19+ */
 color:gray;
 font-style:italic;
}
input[type=search]:-ms-input-placeholder { /* IE (10+?) */
 color:gray;
 font-style:italic;
}
<input placeholder="Search" type="search" name="q">



2
이것은 이제 받아 들여질 것입니다. 플레이스 홀더 속성은 2010 년에 처음 게시 될 때 널리 지원되지 않았지만 이제는 IE8을 제외한 모든 현재 브라우저에서 지원됩니다.
— JSP64

20

특수 CSS 클래스를 추가 및 제거하고 입력 값을 onfocus/ onblurJavaScript로 수정할 수 있습니다 .

<input type="text" class="hint" value="Search..."
    onfocus="if (this.className=='hint') { this.className = ''; this.value = ''; }"
    onblur="if (this.value == '') { this.className = 'hint'; this.value = 'Search...'; }">

그런 다음 CSS에서 원하는 스타일 로 힌트 클래스를 지정 하십시오.

input.hint {
    color: grey;
}

2
나는 같은 일을하지만 더 편리하고 유지 보수가
— 쉬운

6

가장 좋은 방법은 jQuery 또는 YUI 와 같은 일종의 JavaScript 라이브러리를 사용하여 JavaScript 이벤트를 연결하는 것입니다. 와 연결하고 외부 .js 파일에 코드를 넣는 것입니다.

그러나 빠르고 더러운 솔루션을 원한다면 이것이 인라인 HTML 솔루션입니다.

<input type="text" id="textbox" value="Search"
    onclick="if(this.value=='Search'){this.value=''; this.style.color='#000'}" 
    onblur="if(this.value==''){this.value='Search'; this.style.color='#555'}" />

업데이트 : 요청한 채색 물을 추가했습니다.


검색에는 문제가 없지만 대부분의 경우 제출 이벤트에서 워터 마크를 제출하지 않으려 고합니다.
— Kimball Robinson

@ k.robinson 나는 그 진술을 +1했다. 이것은 당시 가장 빠르고 간단한 코드였습니다. 자바 스크립트 코드 블록으로 더 세밀하게 해결할 수 있습니다.
— Seb Nilsson

4

얼마 전에 내 웹 사이트 에이 솔루션을 게시 했습니다 . 사용하려면 단일 .js파일을 가져 오십시오 .

<script type="text/javascript" src="/hint-textbox.js"></script>

그런 다음 CSS 클래스에 힌트를 줄 입력에 주석을 답니다 hintTextbox.

<input type="text" name="email" value="enter email" class="hintTextbox" />

자세한 정보 및 예는 여기에서 확인할 수 있습니다 .


1
그러나 깨졌습니다. 힌트와 동일한 텍스트를 입력하면 입력이없는 것처럼 작동합니다 (
— 탭한

2
@Stephan : 예, 이것이 제가 아는 유일한 경고입니다. 실제로 실제로 문제가되는 것을 발견 했습니까? 그렇다면 div를 계층화하고 표시 / 숨기기를 조사해야 할 수도 있습니다. 이것이 내가 아는 가장 간단한 솔루션입니다. JavaScript가 비활성화되어 있으면 성능이 저하됩니다.
— Drew Noakes

값 설정으로 인해 트리거되었습니다. 텍스트 상자가 비어있을 때 나는 기존 또는 기본 가치와 힌트와 함께 미리 충전의 결합 필요가
— 스테판 EGGERMONT

@Stephan-실제로 오늘 이것에 대한 필요성을 겪었고 jQuery 플러그인을보고 있습니다. 허용 된 답변에 링크 된 것과 동일한 문제가 발생합니다. 대안을 알고 있습니까?
— Drew Noakes

3

다음은 Google Ajax 라이브러리 캐시와 일부 jQuery 매직이 포함 된 기능적인 예입니다.

이것은 CSS 일 것입니다 :

<style type="text/stylesheet" media="screen">
    .inputblank { color:gray; }  /* Class to use for blank input */
</style>

이것은 JavaScript 코드 일 것입니다 :

<script language="javascript"
        type="text/javascript"
        src="http://www.google.com/jsapi">
</script>
<script>
    // Load jQuery
    google.load("jquery", "1");

    google.setOnLoadCallback(function() {
        $("#search_form")
            .submit(function() {
                alert("Submitted. Value= " + $("input:first").val());
                return false;
        });

        $("#keywords")
            .focus(function() {
                if ($(this).val() == 'Search') {
                    $(this)
                    .removeClass('inputblank')
                    .val('');
                }
            })
            .blur(function() {
                if ($(this).val() == '') {
                    $(this)
                    .addClass('inputblank')
                    .val('Search');
                }
            });
    });
</script>

그리고 이것은 HTML이 될 것입니다 :

<form id="search_form">
    <fieldset>
        <legend>Search the site</legend>
            <label for="keywords">Keywords:</label>
        <input id="keywords" type="text" class="inputblank" value="Search"/>
    </fieldset>
</form>

GAJAXLibs와 jQuery에 모두 관심을 갖기를 바랍니다.




2

jQuery 플러그인 jQuery Watermark 가 최상위 답변에 나열된 것보다 낫다는 것을 알았습니다 . 왜 더 좋아? 비밀번호 입력 필드를 지원하기 때문입니다. 또한 워터 마크 (또는 다른 속성)의 색상을 설정하는 .watermark것은 CSS 파일에서 참조 를 만드는 것만 큼 쉽습니다 .


2

이것을 "워터 마크"라고합니다.

첫 번째 답변과 달리 추가 설정이 필요없는 jQuery 플러그인 jQuery 워터 마크 를 찾았습니다 (원본 답변은 양식을 제출하기 전에 특별한 호출이 필요합니다).


2

사용 jQuery를 양식 알리미 -가장 인기있는 jQuery 플러그인 중 하나이며 여기에있는 다른 jQuery 제안 중 일부 버그로 고통받지 않습니다 (예 : 워터 마크가 저장 될지 걱정하지 않고 워터 마크를 자유롭게 스타일링 할 수 있음) 데이터 베이스).

jQuery Watermark는 양식 요소에서 단일 CSS 스타일을 직접 사용합니다 (워터 마크에 적용된 CSS 글꼴 크기 속성도 텍스트 상자에 영향을 미쳤습니다. jQuery Watermark의 장점은 텍스트를 필드로 드래그 앤 드롭 할 수 있다는 것입니다 (jQuery Form Notifier에서는 허용하지 않음).

다른 사람 (digitalbrush.com에있는 사람)이 제안한 또 다른 방법은 실수로 워터 마크 값을 양식에 제출하므로 강력히 권장하지 않습니다.


1

배경 이미지를 사용하여 텍스트를 렌더링하십시오.

 input.foo { }
 input.fooempty { background-image: url("blah.png"); }

그런 다음 value == 0올바른 클래스를 감지 하고 적용하기 만하면됩니다.

 <input class="foo fooempty" value="" type="text" name="bar" />

그리고 jQuery JavaScript 코드는 다음과 같습니다.

jQuery(function($)
{
    var target = $("input.foo");
    target.bind("change", function()
    {
        if( target.val().length > 1 )
        {
            target.addClass("fooempty");
        }
        else
        {
            target.removeClass("fooempty");
        }
    });
});

1

상자에 "검색"이라고 표시 한 다음 포커스가 변경되면 텍스트가 제거됩니다. 이 같은:

<input onfocus="this.value=''" type="text" value="Search" />

물론 그렇게하면 사용자가 클릭 할 때 사용자 자신의 텍스트가 사라집니다. 따라서 더 강력한 것을 사용하고 싶을 것입니다.

<input name="keyword_" type="text" size="25"  style="color:#999;" maxlength="128" id="keyword_"
onblur="this.value = this.value || this.defaultValue; this.style.color = '#999';"
onfocus="this.value=''; this.style.color = '#000';"
value="Search Term">

0

페이지가 처음로드 될 때 텍스트 상자에 원하는 경우 검색이 회색으로 표시됩니다.

입력 상자가 포커스를 받으면 검색 상자에서 모든 텍스트를 선택하면 사용자가 입력을 시작할 수 있으므로 프로세스에서 선택한 텍스트가 삭제됩니다. 이전 텍스트를 수동으로 강조 표시하여 삭제할 필요가 없기 때문에 사용자가 검색 상자를 두 번째로 사용하려는 경우에도 잘 작동합니다.

<input type="text" value="Search" onfocus="this.select();" />

0

나는 "지식 Chikuse"의 솔루션을 좋아합니다-간단하고 명확합니다. 페이지로드가 준비되면 초기 상태를 설정하는 흐림 호출을 추가하기 만하면됩니다.

$('input[value="text"]').blur();

0

onfocus에 다음과 같은 것을 할당하려고합니다.

if (this.value == this.defaultValue)
    this.value = ''
this.className = ''

그리고 이것은 onblur에 :

if (this.value == '')
    this.value = this.defaultValue
this.className = 'placeholder'

(원하는 경우 클래스 이름 전환을 위해 프레임 워크 함수와 같이 조금 더 영리한 것을 사용할 수 있습니다.)

다음과 같은 CSS가 있습니다.

input.placeholder{
    color: gray;
    font-style: italic;
}

0

나는 잘 작동하는 간단한 한 줄 자바 스크립트 솔루션을 사용하고 있습니다. 다음은 텍스트 상자와 텍스트 영역 모두에 대한 예입니다.

    <textarea onfocus="if (this.value == 'Text') { this.value = ''; }" onblur="if (this.value == '') { this.value = 'Text'; }">Text</textarea>

    <input type="text" value="Text" onfocus="if (this.value == 'Text') { this.value = ''; }" onblur="if (this.value == '') { this.value = 'Text'; }">

필드의 값을 가진 작업을 수행하기 전에 $ _POST 또는 Javascript 유효성 검사로 유효성을 검사하는 것이 "단점"입니다. 의미, 필드 값이 "텍스트"가 아닌지 확인.


-1
$('input[value="text"]').focus(function(){ 
if ($(this).attr('class')=='hint') 
{ 
   $(this).removeClass('hint'); 
   $(this).val(''); 
}
});

$('input[value="text"]').blur(function(){
  if($(this).val() == '')
  {
    $(this).addClass('hint');
    $(this).val($(this).attr('title'));
  } 
});

<input type="text" value="" title="Default Watermark Text">

-1

간단한 HTML '필수'태그가 유용합니다.

<form>
<input type="text" name="test" id="test" required>
<input type="submit" value="enter">
</form>

양식을 제출하기 전에 입력 필드를 작성하거나 제출 단추를 누르도록 지정합니다. 여기에 예가 있습니다


유용하지만 질문과는 아무런 관련이 없습니다.
— Quentin

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