javascript:可以添加在默认行为之后运行的事件处理程序吗?

时间:2013-01-06 22:41:50

标签: javascript event-handling

我有一个事件处理程序,我希望在该事件的默认javascript处理发生后执行。

这可能吗?

编辑: 例如: 每次触发按键事件时,我都会记录有关该按键的事件信息(类似于console.log)。现在,当我按退格键并通过事件处理程序查看字段内容时,文本字段的值产生没有退格的值,因为事件处理程序在实际删除最后一个字母之前抓取字段的内容。

在这种情况下,我希望发生默认的退格事件,然后在完成时触发我的事件处理程序。

谢谢!

2 个答案:

答案 0 :(得分:4)

我认为您的问题是由于听取了按键事件而不是keyup事件引起的。基本上这意味着你在将字符放入dom之前获得textarea的值。

尝试将keypress处理程序更改为keyup处理程序。

一个例子是:

$('input, textarea').keyup(function(ev) {

    console.log( $(this).val() );

});

修改:找到了this问题,这似乎是您的确切问题。

答案 1 :(得分:0)

这是一种在事件冒泡到浏览器后运行自定义代码的方法,即首先将输入的值添加到文本字段中,然后在一秒钟之后运行自定义函数。如果你愿意的话,你可以减少这个时间。

$("input").on("keypress", function () {
  setTimeout(function () {
    alert("new value should have been already added to text field. Now we are executing some custom stuff");
  }, 1000);
  return true;
});

working demo