2011-03-18 2 views
0

다음을 변환하여 PrototypeJS Event.observe를 대신 사용하려면 어떻게해야합니까?PrototypeJS 이벤트 처리기에서 벨/딩 방지하기

<input type="text" .... onkeypress="if(event.keyCode==13)return false;">

경우에 (IE9에서) 재생되지해야 딩을 방지하는 것을 목적. 당신이 사용하는 프로토 타입의 이벤트 물건과 같을 것이다 인용 한 어떤

답변

1

: 어떤 경우는, 기본 동작을 방지하고,이 버블 링 이벤트를 중지 :

var input = /* ...get the `input` element, how will depend on your structure... */; 
input.observe('keypress', function(event) { 
    if (event.keyCode == 13) { 
     event.stop(); 
    } 
}); 

Event#stop 두 가지를 수행합니다. 방금 기본 동작을 버블 링하지 않도록하려면 Event#preventDefault을 대신 사용하십시오 (Prototype은 브라우저가 꺼져 있어도 해당 위치에 있는지 확인합니다). 버블 링을 멈추고 기본 동작을 막지 않으려면 대신 Event#stopPropagation을 사용하십시오 (다시, Prototype이 그곳에 있는지 확인합니다). input 요소를 찾는 측면에서


는 : 그것이 id가있는 경우, 그 간단합니다 :

var input = $('theId'); 

또는, 당신이 어디에서, 또는 $$를 사용하여, 자사의 다른 속성에서 찾을 수 있습니다 이것은 꽤 강력한 셀렉터 (CSS3의 대부분)를 제공합니다.

+0

Enter 키를 누를 때 처리기가 실행되는 동안 IE9는 여전히 – c0dem4gnetic

+0

@ c0dem4gnetic을 울립니다. 나는 당신이 무슨 뜻인지 모르겠다. 위는 Prototype으로 인용 코드를 작성하는 방법에 대한 질문에 대한 답입니다. 그것이 당신이하고 싶은 일을하는지 여부는 완전히 다른 질문입니다. :-) –

+0

프로토 타입 1.6 + IE9에서 문제인 것으로 나타났습니다. 1.7로 업그레이드하고 대답에 따라 이벤트를 처리하면 완벽하게 작동합니다. – c0dem4gnetic

관련 문제