2009-10-02 2 views
0

나는 contentEditable div에 눌러 진 모든 키를 가로 챌 필요가있는 상황이 있습니다. KeyPress 이벤트가 발생했을 때 내가하지만,자바 스크립트에서 keypress와 keyup 사이에 어떤 이벤트가 있습니까?

document.getElementById("divEditor").innerHTML 

나는 전체 텍스트를

는 또한의 keyup 이벤트가 연속 키 누름에 대한 발생하지 않습니다 (누르면 마지막 문자가없는) 얻을 수 없습니다. 전체 가치를 지닌 핵심 행사를 가지려면 어떻게해야합니까?

+0

keydown도 있습니다 ... 언제 발사 될지 확실하지 않습니다 – SeanJA

+0

잠시 (요소가 초점에 있음) {// 할 일이 있습니다} 제 생각에는 ...? – SeanJA

답변

1

keyup은 포스트 키 누르기 상태를 볼 수있는 유일한 이벤트입니다.

한 가지 방법은 트랩 keydown이고 상기 누르기 후에 어떤 처리를 수행하기 위해 타임 아웃을 설정 끌어다 통해 통상 그것을 누르기 않고 수정을 수행 할 수도있다 경우

input.onkeydown= function() { 
    setTimeout(function() { 
     // do something 
    }, 1); 
}; 

(및 드롭 및 메뉴 항목 잘라내 기와 붙여 넣기)를 사용하면 키 이벤트를 확인할 필요가 없습니다. 대신 상태가 변경되었는지 확인하기 위해 상태를 폴링해야합니다. onkeyup 처리기 또는 onkeydown 제한 시간을 사용하여이를 백업하여 해당 사례를 더 빨리 업데이트 할 수 있습니다.

var oldstate= input.value; 
function checkState() { 
    if (input.value!=oldstate) { 
     // do something 
     oldstate= input.value; 
    } 
} 
setInterval(checkState, 1000); 
input.onkeyup= checkState; 

(이 단순성에 대한 입력 요소를 사용하지만의 contentEditable에 동일하게 적용 할 수있다.)

+0

요즘 HTML5에는'input type = "text">'에서 꽤 잘 지원되는'input' 이벤트가 있고'