2009-10-02 19 views
0

我有一種情況,我需要攔截每個按鍵被壓入contentEditable div。但是,當按鍵事件發生,如果我這樣做,javascript和keypress之間是否有任何事件?

document.getElementById("divEditor").innerHTML 

我不能全文(沒有最後一個字符按下)

此外,keyUp事件不火的連續按鍵。我能做些什麼來獲得具有整體價值的關鍵事件?

+0

也有keydown ......不知道什麼時候會發生,雖然 – SeanJA 2009-10-02 11:38:36

+0

你可以做一段時間(元素在焦點){//做些事情}我想......? – SeanJA 2009-10-02 11:40:26

回答

1

keyup是唯一可以看到後按鍵狀態的事件。

一種方法是陷阱​​和設置超時的按鍵後做一些處理:通常

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'事件,它在'''上得到了很好的支持,'