2012-01-26 3 views
6

거의 작동합니다. 그러나 원본 텍스트 값이 아니라 "defaulttext"필드를 그대로두면됩니다. defaultText 내에서 변수를 가장 효율적으로 에코하는 방법을 모릅니다.jQuery로 포커스를 입력 취소하고 흐림 효과를 반환

 
$(function() { 
    var defaultText = $(this).val(); 
    $('input[type=text]').focus(function() { 
     $(this).val(''); 
     }); 
    $('input[type=text]').blur(function() { 
     $(this).val('defaultText'); 
     echo 
     }); 
}); 

답변

1

Simpl 쓰기 : 변수가없는 다른 사람은 $(this).val(defaultText):입니다.

0

변수 defaultText을 참조하고 있지 않습니다. 따옴표로 묶여 있기 때문에 문자열을 전달하고 있습니다.

$(function() { 
    var defaultText = $('input[type=text]').val(); 
    $('input[type=text]').focus(function() { 
     $(this).val(''); 
     }); 
    $('input[type=text]').blur(function() { 
     $(this).val(defaultText); // fixed! 
     }); 
}); 
+0

이렇게하면 종료시 텍스트가 반환되지 않습니다. – cchiera

+0

죄송합니다, 지금 고정. 변수'defaultText'에 접근하기 위해'this' 키워드를 부적절하게 사용하고있었습니다. 'this' 키워드를 이해하는 데 도움이 필요하면 여기에 좋은 자료가 있습니다 : http://www.learningjquery.com/2007/08/what-is-this – shaunsantacruz

2

설정 메소드 (val)의 defaultText 변수 주변에있는 ''표시를 제거해야합니다.

$(function() { 
    var defaultText = ''; 
    $('input[type=text]').focus(function() { 
     defaultText = $(this).val(); 
     $(this).val(''); 
    }); 
    $('input[type=text]').blur(function() { 
     $(this).val(defaultText); // NB removed the ' ' marks 
     //echo // What are you trying to echo? 
    }); 
}); 
+1

이것은 작동하지 않습니다. – cchiera

+0

흠 나는 집에 올 때 그것을 고쳐 줄 것이다. 나에게 알려주기위한 환호 –

13
$(function() { 
    var input = $('input[type=text]'); 

    input.focus(function() { 
     $(this).val(''); 
    }).blur(function() { 
     var el = $(this); 

     /* use the elements title attribute to store the 
      default text - or the new HTML5 standard of using 
      the 'data-' prefix i.e.: data-default="some default" */ 
     if(el.val() == '') 
      el.val(el.attr('title')); 
    }); 
}); 

의 HTE의 라인을 따라

시도 뭔가 업데이트

브라우저가 점진적으로 "힌트"를 표시 할 수있는 기능을 제공하는 placeholder 속성을 구현하는 사용자.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input#attr-placeholder

+1

+1 구문 오류뿐만 아니라 OP 코드의 논리 오류를 실제로 수정하기위한 +1. – millimoose

+0

모든 답변 중에서이 기능은 작동하지만 title 속성을 사용해야합니다. 제목없이 할 수있는 방법이 있습니까? 따라서 스 니펫을 사용하는 모든 사이트에서 값이있는 입력 필드는 포커스가 지워지고 종료 될 때 다시 돌아옵니다. 사이트에 모든 입력에 제목 태그가 없더라도? – cchiera

+0

자신의 속성을 사용하십시오 - 바람직하게는 'data-'의 HTML5 표준을 사용하십시오 – xandercoded

0

당신의 방화범이 시도 :

$(function() { console.log($(this)) }); 

당신은

var defaultText = $(this).val(); 

당신이 원하는 것을 아마 것을 발견 할 것이다. 입력에 대한 초기 값은 기본 텍스트 인 경우

, 이런 식을 구하십시오이 페이지에 하나의 입력 텍스트가있는 경우에만 제대로 작동합니다

var defaultText = $('input[type=text]').val() 

는 알고 있어야합니다.

또한에 따옴표를 제거 :

$(this).val('defaultText'); 
+0

감사. 웹 페이지가 여러 입력을 가질 수 있기 때문에 실제 사용에서는 실용적이지 않지만 아이디어에 감사드립니다. – cchiera

1

사용 HTML5는 각 입력 태그에 자리 속성, 예를 들면 :

<input type="text" value="original text value" placeholder="default value" /> 
2

이 솔루션은 jQuery를 요구한다!

는 그래서 같은 유틸 모듈에서이 기능을 싸서 다음 HTML에서

var utils = (function() { 
    var utils = {}; 
    //some other properties... 
    utils.setupAutoclearInputs = function() { 
     $('.input-autoclear').each(function() { 
      $(this).data('default', $(this).val()).addClass('gray'); 
     }).focus(function(e) { 
      if (!($(this).val() !== $(this).data('default'))) { 
       $(this).removeClass('gray').addClass('black').data('modified', true).val(''); 
      } 
     }).blur(function(e) { 
      if (!($(this).val() !== $(this).data('default')) || $(this).val() === '') { 
       $(this).removeClass('black').addClass('gray').val($(this).data('default')); 
      } 
     }); 
    } 
    //some other methods... 
    return utils; 
}()); 

:

추가 : class="input-autoclear" 당신이 포함하려는 각 입력에.

설정 기본값 : <input ... value="defaultValue" ... >

은 회색과 검은 색 텍스트 또는 당신이 무엇을 원하는 일부 CSS 클래스를 만듭니다.

개인적으로 나는 .gray { ... }.black { ... }을 사용하고 있지만 더 나은 이름을 원할 수 있습니다. 마지막으로

:

화재를 사용하여 유틸 모듈 방법 :

$(document).ready(function() { 
    ... 
    utils.setupAutoclearInputs(); 
    ... 
} 

모듈의 코드가 document.ready 호출 외부에서 살고 있는지 확인하고 당신은 아마의 글로벌 범위에서 원하는됩니다 신청.

올바른 자바 스크립트 모듈 작성에 대한 자세한 내용은 article을 방문하십시오.

0
var q = $('#q'); 
q.focus(function() { 
    if ($(this).attr('data-default') == $(this).val()) { 
     $(this).val(''); 
    } 
}).blur(function() { 
    if($(this).val() == '') { 
     $(this).val($(this).attr('data-default')); 
    } 
}); 


<input type="text" name="q" id="q" data-default="Search..." value="Search..."/> 
2

.data() 함수를 사용하여 기본 텍스트를 저장합니다. 추가 마크 업이 필요 없습니다.

$('input').focus(function() { 
    if (!$(this).data("DefaultText")) $(this).data("DefaultText", $(this).val()); 
    if ($(this).val() != "" && $(this).val() == $(this).data("DefaultText")) $(this).val(""); 
}).blur(function(){ 
    if ($(this).val() == "") $(this).val($(this).data("DefaultText")); 
}); 
+0

양식을 제출하고 브라우저에서 다시 밀어 넣으면 제대로 작동하지 않습니다. 그것은 이전 제출물에 입력 한 값을 기본 텍스트로 사용하므로이 텍스트를 지우고 클릭하면 원래 DefaultText를 사용하지 않습니다. 수정 방법에 대한 아이디어가 있습니까? –

0
이가 작동
$('.myclass').each(function() { 
    var default_value = this.value; 
    $(this).css('color', '#666'); // this could be in the style sheet instead 
    $(this).focus(function() { 
     if(this.value == default_value) { 
      this.value = ''; 
      $(this).css('color', '#333'); 
     } 
    }); 
    $(this).blur(function() { 
     if(this.value == '') { 
      $(this).css('color', '#666'); 
      this.value = default_value; 
     } 
    }); 
}); 
<input type="text" class="myclass" size="30" value="type here" /> 
0

! 나는 그것을 직접 사용한다 :

/* Forminputs löschen und wiederherstellen */ 
jQuery(function() { 
    var input = jQuery('#userForm input[type=text], #userForm textarea'); 

    input.focus(function() { 

     jQuery(this).attr('data-default', jQuery(this).val()); 
     jQuery(this).val(''); 

    }).blur(function() { 
     var el = jQuery(this); 

     if (el.val() == '') 
      el.val(el.attr('data-default')); 
    }); 
}); 
0

나는이 코드를 조금 재미있게 만들었다.

$(document).ready(function() { 
    var defaultText = ''; 
    $('.input-focus-clear').focus(function() { 
     defaultText = $(this).val(); 
     $(this).val(''); 
    }); 
    $('.input-focus-clear').blur(function() { 
     var newText = $(this).val(); 
     if (newText.length < 1) { 
      $(this).val(defaultText); 
     } 
    }); 
}); 
관련 문제