我有一个事件处理程序,我想在该事件的默认 javascript 处理发生后执行。
这可能吗?
编辑:例如:每次触发按键事件时,我都会记录有关该按键的事件信息(类似于 console.log)。现在,当我按下退格键并通过事件处理程序查看字段内容时,文本字段的值会生成没有退格键的值,因为事件处理程序在实际删除最后一个字母之前抓取了字段的内容。
在这种情况下,我希望发生默认的退格事件,然后在完成时触发我的事件处理程序。
谢谢!
我有一个事件处理程序,我想在该事件的默认 javascript 处理发生后执行。
这可能吗?
编辑:例如:每次触发按键事件时,我都会记录有关该按键的事件信息(类似于 console.log)。现在,当我按下退格键并通过事件处理程序查看字段内容时,文本字段的值会生成没有退格键的值,因为事件处理程序在实际删除最后一个字母之前抓取了字段的内容。
在这种情况下,我希望发生默认的退格事件,然后在完成时触发我的事件处理程序。
谢谢!
我看到除了问题中的名称之外还有一个不同的问题。在这方面,+1 Sam :)。
但是,我想在这里解决这个问题,而不仅仅是分支。有一种方法可以处理特定的按键事件或默认为一个。
keypress
气泡。所以使用一个全局的,然后在本地需要它的任何地方,使用e.stopPropagation()
它来阻止它冒泡。这是它的工作演示:http: //jsfiddle.net/2EwhR/
这是html:
<div id="d1">_</div>
<br><hr>
<div id="d2"><input id="i1" type="text" /></div>
js:
var d1 = document.getElementById("d1");
window.onkeypress = function(ev){
d1.innerHTML = "keyCode: " + ev.keyCode;
};
var d2 = document.getElementById("d2");
var i1 = document.getElementById("i1");
d2.onkeypress = function(ev){
d1.innerHTML = "blocked";
ev.stopPropagation();
};
这将是在事件冒泡到浏览器后运行自定义代码的一种方式,即首先将输入的值添加到文本字段,然后稍后您的自定义函数将运行。如果你愿意,你可以把这个时间缩短很多。
$("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;
});