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