JavaScript 텍스트 상자 워터마크/자리 표시자(워터마크/자리 표시자) 구현 방법_javascript 기술
Firefox/Chrome/Opera는 특정 버전부터 이 기능을 지원해 왔지만 IE 시리즈, 심지어 IE9도 아직 지원하지 않기 때문에 자리 표시자 기능을 지원하지 않는 이들 브라우저와 호환하려면 JavaScript를 사용해야 합니다.
일반적인 관행
현재 일반적으로 사용되는 관행은 다음과 같이 form 요소의 onfocus/onblur 이벤트를 통해 값을 변경하는 것입니다.
🎜>var el = document.getElementById("text1");
if (el.value == "")
el.value = "프롬프트 메시지";
el.onfocus = function () {
if (this.value == "프롬프트 메시지")
this.value = ""
}
el.onblur = function() {
if (this .value == " ")
this.value = "프롬프트 정보";
}
JQuery의 다양한 워터마크 플러그인(http:/ /archive.plugins.jquery.com/plugin-tags/watermark) 대부분 이 접근 방식을 채택하며 일부 스타일 및 기타 작업 설정도 포함될 수 있습니다.
폼 요소를 직접 조작하는 방식으로 편리하고 빠르며 더욱 실용적입니다.
그러나 단점도 있습니다.
일부 작업에서는 자동 완성, 확인 등과 같은 기능을 구현하기 위해 양식 요소의 값을 모니터링해야 합니다.
값이 필요합니다. 양식 제출 시 삭제
물론 여기에 나열되지 않은 다른 단점이 있을 수 있습니다.
더 나은 접근 방식
불필요한 문제를 방지하려면 양식 요소의 값을 변경하지 마세요.
먼저 아래와 같은 텍스트박스가 있다면
실수로 Taobao의 로그인 페이지를 발견해도 추가 작업이 필요하지 않습니다. 위치 레이어를 추가하면 포장용 상대 컨테이너가 오프셋을 발생시키지 않으므로 다음과 같이 텍스트 상자 앞에 프롬프트 정보 표시만 배치하면 됩니다.
이런 방식으로 생성된 마크업은 더 간결해졌습니다.
해당 스타일
여백: 0;
글꼴 크기: .8em;
불투명도: 1; 🎜>/* 마커 숨기기*/
.w-hide {
visibility: hide;
opacity: 0;
}
/* 양식 요소에 포커스가 있을 때의 마커 색상 */
.w -active {
color: #ddd;
}
그러면 html은 다음과 같습니다:
코드 복사
코드는 다음과 같습니다. 코드 복사
코드는 다음과 같습니다.
/* 이벤트 바인딩*/
var addEvent = document.addEventListener ?
function(element, type, fn) {
element.addEventListener(type, fn, false); >} :
function(element, type, fn) {
element.attachEvent("on" type, fn)
},
/* 이벤트 바인딩 해제*/
RemoveEvent = document .removeEventListener ?
function(element, type, fn) {
element.removeEventListener(type, fn, false)
} :
function(element, type, fn) {
element .detachEvent("on" 유형, fn);
},
/* 텍스트 상자 워터마크/자리 표시자*/
watermark = function(element, text) {
if ( !(워터마크의 인스턴스) ))
새 워터마크 반환(요소, 텍스트);
var place = document.createElement("span");//정보 표시 표시
element.parentNode.insertBefore(place, element);// 양식 요소
place.className = "w-label";
place.innerHTML = text
place.style.height = place.style.lineHeight = 요소 .offsetHeight "px; ";//높이와 줄 높이를 중앙으로 설정
element.place = this;
function hideIfHasValue() {
if (element.value && place.className.indexOf("w- hide") = = -1)
place.className = " w-hide";
}
function onFocus() {
hideIfHasValue()
if (!element.value && place .className.indexOf ("w-active") == -1)
place.className = " w-active"
}
function onBlur() {
if (!element.value ) {
place.className = place.className.replace(" w-active", "");
place.className = place.className.replace(" w-hide", "")
}
function onClick() {
hideIfHasValue();
try {
element.focus && element.focus()
} catch(예) {}
}
// 각 이벤트 등록
hideIfHasValue();
addEvent(element, "focus", onFocus)
addEvent(element, "blur", onBlur)
addEvent (element, " keyup", hideIfHasValue);
addEvent(place, "click", onClick);
// 워터마크 취소
this.unload = function() {
removeEvent(element, " focus", onFocus );
removeEvent(element, "blur", onBlur);
removeEvent(element, "keyup", hideIfHasValue)
removeEvent(place, "click", onClick); .removeChild(place);
element.place = null;
};
위 코드는 각각 양식 요소의 포커스/블러/키업을 전달합니다. 프롬프트 정보 표시의 표시, 숨기기 및 스타일을 제어하는 데 사용됩니다. 또한 프롬프트 정보 표시의 클릭 이벤트는 이를 숨기고 양식 요소에 대한 포커스를 얻는 데 사용됩니다.
마지막으로 워터마크를 취소할 수 있는 언로드 방법이 제공됩니다.
특정 용도
코드를 복사하세요 <script> <div class="codebody" id="code73270">var m1 = watermark(document.getElementById("text1"), "프롬프트 메시지"); >addEvent(document .getElementById("button1"), "click", function() { <br>m1.unload(); <br>}) <br></script>
html5 자리 표시자 호환
이제 위의 구현을 사용할 수 있으므로 html5 자리 표시자를 지원하지 않는 브라우저와 호환되는 것도 매우 간단합니다. 먼저 브라우저가 자리 표시자를 지원하는지 확인해야 합니다.
코드 복사
코드 복사
ph = elems[ i].getAttribute("placeholder");
if (ph) elems[i].ph = watermark(elems[i], ph)
}
}
}
데모 코드는 다음과 같습니다.
코드 복사

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











JavaScript 문자열 교체 방법 및 FAQ에 대한 자세한 설명 이 기사는 JavaScript에서 문자열 문자를 대체하는 두 가지 방법 인 내부 JavaScript 코드와 웹 페이지의 내부 HTML을 탐색합니다. JavaScript 코드 내부의 문자열을 교체하십시오 가장 직접적인 방법은 대체 () 메소드를 사용하는 것입니다. str = str.replace ( "find", "replace"); 이 메소드는 첫 번째 일치 만 대체합니다. 모든 경기를 교체하려면 정규 표현식을 사용하고 전역 플래그 g를 추가하십시오. str = str.replace (/fi

손쉬운 웹 페이지 레이아웃에 대한 jQuery 활용 : 8 에센셜 플러그인 jQuery는 웹 페이지 레이아웃을 크게 단순화합니다. 이 기사는 프로세스를 간소화하는 8 개의 강력한 JQuery 플러그인을 강조합니다. 특히 수동 웹 사이트 생성에 유용합니다.

그래서 여기 당신은 Ajax라는이 일에 대해 배울 준비가되어 있습니다. 그러나 정확히 무엇입니까? Ajax라는 용어는 역동적이고 대화식 웹 컨텐츠를 만드는 데 사용되는 느슨한 기술 그룹을 나타냅니다. 원래 Jesse J에 의해 만들어진 Ajax라는 용어

기사는 JavaScript 라이브러리 작성, 게시 및 유지 관리, 계획, 개발, 테스트, 문서 및 홍보 전략에 중점을 둡니다.

10 재미있는 jQuery 게임 플러그인 웹 사이트를보다 매력적으로 만들고 사용자 끈적함을 향상시킵니다! Flash는 여전히 캐주얼 웹 게임을 개발하기위한 최고의 소프트웨어이지만 JQuery는 놀라운 효과를 만들 수 있으며 Pure Action Flash 게임과 비교할 수는 없지만 경우에 따라 브라우저에서 예기치 않은 재미를 가질 수 있습니다. jQuery tic 발가락 게임 게임 프로그래밍의 "Hello World"에는 이제 jQuery 버전이 있습니다. 소스 코드 jQuery Crazy Word Composition 게임 이것은 반은 반은 게임이며, 단어의 맥락을 알지 못해 이상한 결과를 얻을 수 있습니다. 소스 코드 jQuery 광산 청소 게임

이 튜토리얼은 Ajax를 통해로드 된 동적 페이지 상자를 작성하여 전체 페이지 재 장전없이 인스턴트 새로 고침을 가능하게합니다. jQuery 및 JavaScript를 활용합니다. 맞춤형 Facebook 스타일 컨텐츠 박스 로더로 생각하십시오. 주요 개념 : Ajax와 JQuery

이 JavaScript 라이브러리는 Window.Name 속성을 활용하여 쿠키에 의존하지 않고 세션 데이터를 관리합니다. 브라우저에 세션 변수를 저장하고 검색하기위한 강력한 솔루션을 제공합니다. 라이브러리는 세 가지 핵심 방법을 제공합니다 : 세션

이 튜토리얼은 jQuery를 사용하여 매혹적인 시차 배경 효과를 만드는 방법을 보여줍니다. 우리는 멋진 시각적 깊이를 만드는 계층화 된 이미지가있는 헤더 배너를 만들 것입니다. 업데이트 된 플러그인은 jQuery 1.6.4 이상에서 작동합니다. 다운로드
