2012-07-04 4 views
1

현재 포커스에서 입력 텍스트의 기본값을 지우는 데 인라인 자바 스크립트를 사용하고 있습니다. 사용자가 아무 것도 입력하지 않으면 기본값이 흐리게 표시됩니다. 코드는 다음과 같습니다 :jQuery 입력 텍스트 지우기, 기본값으로 돌아 가기 입력 없음

이 단편을 사이트 전체의 모든 단일 텍스트 입력에 추가해야한다는 사실에 문제가 있습니다. jQuery와 같은 점은 모든 텍스트 입력 (: 텍스트)에 대해 자동으로 이렇게하는 것입니다.

다음 두 가지 오류로 인해 다음과 같은 오류가 발생했습니다. (1) 텍스트 필드에있을 수있는 모든 값을 지 웁니다. 값이 기본 attr 값인 경우에만 값을 지우고 싶습니다. (2) blur 함수는 기본값을 삽입하지 않습니다. 나는 믿을 수 없을만큼 단순한 무언가를 놓치고있다. 나는 아주 확신한다.

$(':text').focus(function() { 
      var value = $(this).val(); 
      var defval = $(this).attr('value'); 
      if(value == defval) { 
       $(this).val(''); 
      } 
     }); 
     $(':text').blur(function() { 
      var value = $(this).val(); 
      var defval = $(this).attr('value'); 
      if(value == '') { 
       $(this).val(defval); 
      } 
     }); 

미리 감사드립니다.

+0

하지 않습니다 $ (이) .val()와 $ (이) .attr ('값') 같은 일을 포기? – richard

+0

@richard. 아니요. $ (this) .attr ('value')'는'value' 속성 안에 내용을 제공하고'$ (this) .val()'은 실제 값을 줄 것입니다. 예 : 텍스트 필드의 값을 변경하고 소스 코드를 볼 때 * it *은 변경되지 않았습니다. –

+0

플러그인을 사용하지 않는 이유는 무엇입니까? – Andre

답변

2

defaultValue 대신 html5 자리 표시자를 사용하고 최신 브라우저에서 자리 표시 자 지원이없는 경우 JS로만 폴백하는 것이 좋습니다. 이 모든 이것과 몇 가지 가능한 코너 케이스를 처리로

$('input[type="text"]').on({ 
    focus: function(){ 
     var $this = $(this); 
     if($this.val() === $this[0].defaultValue) $this.val(''); 
    }, 
    blur: function(){ 
     var $this = $(this); 
     if($this.val() === '') $this.val($this[0].defaultValue); 
    } 
}); 

게다가, 내가보기 엔, 플러그인을 사용하는 것이 좋습니다 ...

보세요 :

어쨌든,이 DEFAULTVALUE를 사용하여 간단한 구현은 :

http://unwrongest.com/projects/defaultvalue/

+0

예를 들어 주셔서 감사합니다. 플러그인을 사용하겠습니다. –