2009-08-21 2 views
0

"onfocus"백 그라운드 색상 변경, "onkeypress"수락 만 허용, "onblur"서식 지정 및 숫자 확인 (us-phone 형식 사용) 등과 같은 몇 가지 이벤트가있는 간단한 HTML 텍스트 상자가 있습니다. " 도구 설명을 숨기는 "onmouseout", 툴팁을 숨기는 "onmouseout"등이 있습니다.javascript를 사용하여 요소 관리 이벤트

타사 라이브러리 (프로토 타입, jQuery, Dojo 등)를 사용하지 않고 모든 이벤트를 동적으로 관리하고 싶습니다. 내 브라우저는 IE 6 이상에서만 작동합니다. 파이어 폭스 없음. <body> 태그 아래의 코드는 <input type="text" id="usphone" name="usphone" title="enter phone with area code" class="usphoneClass"/> 이고 아래 코드는 <script> 태그와 같습니다. 내가 타사 라이브러리를 사용하지 동의하지 않지만 당신의 도구 설명이에는 링크가없는 경우

document.getElementByID('usphone').onfocus= ChangeBackgroudColor(); 
document.getElementByID('usphone').onkeypress= return isNaN(); 
document.getElementByID('usphone').onblur= formatUSPhone();validateUsPhone();ChangeColor(); 
document.getElementByID('usphone').onmouseover= showtooltip(); 
document.getElementByID('usphone').mouseout= hidetooltip(); 
+5

왜 제 3 자 라이브러리를 사용하지 않겠습니까? 바퀴를 다시 발명하는 것은 이치에 맞지 않습니다. – Zoidberg

+0

IE에 충실하고 싶다면 HTC를 고려하고 스크립트에 동작을 지정할 수 있습니다. 그 외에는 코드 검토를 찾고 있다고 가정하고 있습니까? 네가 제대로 된 것 같아. 검사 할 텍스트 상자를 알 수 있도록 isNaN()에서 텍스트 상자를 사용할 수 있도록해야합니다. 또는 텍스트 상자 프로토 타입에 isNaN 함수를 추가하십시오. 기타. –

답변

0

,이

HTML을 시도 할 수 있습니다

<a class="tooltipTarget" onclick="return false;"> 
    <div class="tooltip">BLAH BLAH BLAH yackity smackity</div> 
</a> 

CSS

a.tooltipTarget {position:relative;} 
a.tooltipTarget .tooltip {display:none;} 

a.tooltipTarget:hover .tooltip { 
     position:absolute; 
     right:10px; /* Adjust as per preference*/ 
     bottom:5px; 
} 
0

IE에는 attachEvent 이벤트 처리기를 등록하는 방법이 있습니다. 사용량이 eventNameonevent 및 방법의 형태로 스트링 호출하는 자바 스크립트 함수에 대한 참조

Object.attachEvent(eventName, method); 

이다. 처리기 메서드는 event 개체 인 1 개의 매개 변수를받습니다.

상황에

당신은 우리가 참조를 전달하기보다는이 시간에 기능을 실행하고 있기 때문에 함수 참조 괄호를 포함하지 않는 것이

var phoneInput = document.getElementByID('usphone'); 
phoneInput.attachEvent('onfocus', ChangeBackgroudColor); 
phoneInput.attachEvent('onkeypress', function(e) { return isNaN(e.srcElement.Value); }); 
phoneInput.attachEvent('onblur', function (e) { 
    formatUSPhone(); 
    validateUsPhone(); 
    ChangeColor(); 
}); 
// TODO onmouseover, onmouseout 

메모를 할 것입니다. 또한 동일한 요소에 여러 핸들러를 등록하는 경우 실행 순서가 보장되지 않습니다. onblur과 같이 특정 순서로 실행하는 함수가 필요한 경우 해당 호출을 익명 함수로 래핑 할 수 있습니다.

IE에는 이벤트를 발생시킨 요소에 대한 참조가 event.srcElement에 있습니다.

관련 문제