2013-02-16 2 views
0

그래서 dom 스크립팅에 대한 일부 논리를 만들고 키를 누를 때 여러 가지 방법을 실행해야하는 문제를 발견하게됩니다.Javascript : 동일한 텍스트 입력에서 여러 onkeyup 이벤트 잡기

첫 번째 방법 :

...var elements=$$('[id^='+table+']&[id$='+tableField+']'); 

elements.each(function filter(item) { 

    //for each item 
    item.onkeyup = function() { ... 

두 번째 방법 :

...//for each referenced input  
for(var i=0, fields=htmlFieldElems.length;i<fields;i++){ 

    //set keyup event for involved fiels in the expression 
    $(htmlFieldElems[i]).onkeyup = function() {... 

그것은 입력 일이 발생할 수도 있습니다 그것은 정의의 마지막 onKeyUp에 실행 한 것 같다, 여기에 몇 가지 코드입니다 요소가 두 메소드에서 동일 할 수 있으며 둘 다 변경 될 때 실행해야하므로 ...이 문제를 처리하는 가장 좋은 방법은 무엇입니까? 당신은 jQuery와 같은 프레임 워크를 사용하는 경우 순수 자바 스크립트

답변

1

, 당신은

item.onkeyup = function() { 
    func1(); 
    func2(); 
    funcn(); 
} 

... 이런 식으로, 당신의 onKeyUp에 이벤트 핸들러에서 여러 방법을 바로 호출 할 수 있습니다, 당신은 단지 같은 이벤트를 계속 추가 할 수 있습니다 이 :

$('#item').keyup(func1); 
$('#item').keyup(func2); 
$('#item').keyup(funcn); 

프로토 타입 :

$('foo').observe('keyup', function(event) { 
    func1(); 
    func2(); 
    funcn(); 
}); 
+0

을 유지하기 쉬운 것입니다. – Maxrunner

+0

나는 프로토 타입을 사용한 적이 있지만, 빠른 구글은 다음과 같은 제안 : $ ('foo는'() '의 keyup', 기능 (이벤트) { 에서 func1() 관찰, FUNC2(); funcn을(). ; }}); –

+0

프로토 타입 예제가 –

2

이것은 내가 jQuery를 사용하여 팔로우 것입니다. 여기에 심지어는 다른 대답이 .. 도움이 게시이 도움이 example

$('#element').bind('customE',function(){ 
    // do some stuff 
}); 

$('#element').bind('customE',function(){ 
    // do some other interesting stuff else use one event handler :-) 
}); 

$('#element').bind('customE',function(){ 
    // still another 
}); 

$('#element').on('keyup',function(){ 
    $('#element').trigger('customE'); 
}); 

희망 ...이다 그러나 이것은 :-)에게 내가 프로토 타입을 사용하고

+0

도이 jquery입니까? – Maxrunner

+0

예. 그것을 시도하십시오 .. 그것은 흥미 롭습니다 :-) – Exception