2014-01-07 33 views
4

<textarea>的值甚至发生更改之前,正在执行将文本添加到<textarea>中时要运行的keydown处理程序。我想在添加文本后运行我的处理程序。在<textarea>的值已更改后运行keydown事件处理程序

这是我的JSFiddle

我不想通过setInterval()或使用键控监听器来延迟功能。

+0

键控有什么问题? – SomeKittens

+0

我发布了我正在处理的代码的简化版本。我不能在实际代码中使用keyup,原因是我不想详细说明。 – cinderblock

回答

3

它有点哈克,但如果你必须:Live demo (click).

$("textarea").keydown(function(){ 
    setTimeout(function() { 
     console.log($('textarea').val()); 
    },0); 
}); 

textarea的值将不会被设置直到keydown事件触发后,所以keyup是优选的。如果你想使用​​,我认为唯一的解决方法是用0时间setTimeout()放弃调用堆栈,以便在注册该值后其余代码将被触发。

+0

这就够了,但我会等待,看看在接受之前是否发布了更干净的解决方案。 – cinderblock

+0

@cinderblock我不认为这是可以做到的,但我很容易被错误:) – m59

相关问题