스택 오버플로와 같은 워터 마크를 양식으로 구현하려면 어떻게해야합니까?
-
20-09-2019 - |
문제
입력 양식을보다 "사용 가능한"방식으로 스타일링하는 방법에 대해 이야기하는 튜토리얼을 본 것을 기억합니다.
본질적으로, 당신은 자리 표시 자 가치가 있으며 입력에 들어가면 힌트를 숨 깁니다.
이제 분명히 말해서 : 나는 힌트 (자리 표시 자 가치 텍스트)가 초점에 사라지는 것을 원하지 않고 처음으로 무언가를 입력하기 시작할 때 더 가벼워지기를 원하지 않습니다. 좋은 예 :
양식을 확인하십시오 Aardvark. 이것이 바로 내 입력 양식을 갖고 싶은 방법입니다.
우리의 자체 스택 오버플로 - 질문을하려고 할 때 입력 양식 내부를 클릭하면 텍스트를 즉시 숨기지 않습니다. 당신은 당신의 커서와 힌트를 볼 수 있습니다. 그러나 입력을 시작하면 힌트가 숨 깁니다. (위의 Aardvark 예와 같이 모두 함께 숨기지 않고 훨씬 더 가벼운 그늘에가는 것을 선호합니다.)
나는이 정확한 요구 사항으로 interwebz 어딘가에 튜토리얼을 읽은 것을 매우 명확하게 기억하지만, 나는 그것을 북마크하는 것을 잊었습니다.
제안/링크가 있습니까?
업데이트 : 최근에 jQuery 플러그인을 찾았습니다 현장 라벨 그것은 내가 원하는 것을 정확하게합니다. 또한, 여기 링크가 있습니다 동일한 플러그인의 개선. ]
해결책
당신은 이것에서 시작할 수 있습니다 :
<input type="text" value="Your Hint Here"
onFocus="if (this.value == 'Your Hint Here') this.style.color = '#ccc';"
onKeyDown="if (this.value == 'Your Hint Here') {
this.value = ''; this.style.color = '#000'; }">
힌트 문자열을 세 번 반복하지 않는 방식으로 JavaScript 함수를 사용하도록 위의 것을 조정해야 할 것입니다. 그러나 이것이 올바른 방향으로 갈 수 있기를 바랍니다.
또한 "지금 가입"이 vark.com 또한 텍스트 상자의 시작 부분을 끝에 두는 대신 커서 위치를 설정하십시오. 이것은 크로스 브라우저를 작동시키기에 약간 까다로울 수 있지만 다음 기사에서 제안한 솔루션을 확인할 수 있습니다. 조쉬 스토 돌라:
다른 팁
html5가 있습니다 placeholder
기인하다, 이 작업을 위해 설계되었습니다.
WebKit (Safari 및 Google Chrome에 사용되는 렌더링 엔진)만이 지금까지 지원합니다. 자리 표시자가 지원되지 않을 때 Daniel 's와 같은 JavaScript 폴백을 원할 것입니다.
그것은 사소합니다 확인하십시오 placeholder
자바 스크립트 지원.
입력 필드는 기본 텍스트와 사용자가 제공 한 텍스트를 동시에 모두 가질 수 없습니다. 당신이 요구하는 것을 정확하게 달성 할 수있는 유일한 방법은 입력 필드에 배경 이미지를 표시하는 것입니다. 고도로 두 텍스트 계층의 텍스트가 사용자에게 매우 혼란 스러울 것이므로이를 권장합니다. 이것을 달성하는 가장 일반적인 방법 (그리고 당신의 예시 사이트 vark.com에서 수행되는 것)은 다음을 사용하는 것입니다. 집중하다 텍스트를 지우는 방법 :
$('#my_input').focus(function() {
if($(this).val() == 'default text') {
$(this).val('');
}
});
stackoverflow (및 vark.com의 가입 양식)를 달성하기 위해 키 다운 이벤트:
$('#my_input').keydown(function() {
if($(this).val() == 'default text') {
$(this).val('');
}
});
초점에 대한 색상 변경과 키 다운에 대한 텍스트에 대한 텍스트를 모두 달성하려면 다음과 같습니다.
// set text to grey on focus
$('#my_input').focus(function() {
if($(this).val() == 'default text') {
$(this).css('color', '#999999');
}
});
// set text to black and clear default value on key press
$('#my_input').keydown(function() {
if($(this).val() == 'default text') {
$(this).val('');
$(this).css('color', '#000000');
}
});
@Paul의 게시물에 응답하여 html5 자리 표시자는 내 안드로이드 에뮬레이터에 이상하게 행동합니다. 자리 표시자는 클릭을 클릭 할 때까지 멋지게 보이고 단어의 오른쪽에 커서로 검은 색이됩니다. 물론, 입력하면 사라지지만 직관적이지는 않습니다. 그래서 나는 몇 가지를 썼습니다 jQuery 그것을 고치려면 (내 html5/jquery badge는 어디에 있습니까?)
$(document).ready(function() {
$('input[placeholder]').focus(function() {
if (!$(this).val()) $(this).val('');
});
});
나는 썼다 이 예 더 나은 이름이 부족하기 때문에 지속적인 자리 표시 자.
조금 더 마크 업이 필요합니다 div
포장 a label
그리고 input
, 그러나 이는 다른 많은 문제를 해결하고 (예 : 양식 데이터 또는 비밀번호 필드에 들어가는 자리 표시자가 작동하지 않음) 실제 마크 업은 읽기가 매우 깨끗합니다. 당신은 다음과 같은 것으로 끝납니다.
<div class="input-wrapper">
<label for="id_username">Username</label>
<input id="id_username" type="text" name="username">
</div>
그리고 CSS와 JS를 포함한 후에는 작동합니다.