[英]javascript: Possible to add event handler that runs after the default behavior?
[英]Javascript event handler to execute after default behavior
在 Javascript 中,如何附加事件处理程序以便它在默认操作之后运行?
<form target="_blank" action="submit.php" onsubmit="doThisAfterSubmit()">
<input type="submit" onclick="doThisAfterSubmit()" />
</form>
类似但不足的 Stack Overflow 问题:
javascript:可以添加在默认行为之后运行的事件处理程序吗?
我已经阅读了这些,但他们正在处理通过使用诸如keyup
over keypress
类的变体解决的击键事件。 我见过的唯一其他解决方案是setTimeout()
方法。 如果存在,我想避免使用setTimeout()
以支持更优雅的解决方案。
我的用例是我想在提交后从 DOM 中删除表单。
您可以自己执行默认操作,然后执行您想要的操作,然后阻止默认操作运行。
<form target="_blank" action="submit.php"
onsubmit="this.submit(); doThisAfterSubmit(this); return false;">
<input type="submit" />
</form>
注意:在“onsubmit”中调用this.submit()
不会像你想象的那样导致无限循环。
编辑:我原来的 jsfiddle 只在表单提交后显示文本。 我再次尝试,但更改它以删除您想要的表单。 这导致表单不再提交,即使this.submit()
首先被调用。 在这种情况下,您可以使用setTimeout()
来延迟表单的删除,直到原始线程完成执行,如下所示:
function doThisAfterSubmit(form) {
setTimeout(function() {
$(form).remove();
}, 0);
};
现在表单在被删除之前被提交。
您可以改用事件冒泡:
<div onclick="this.remove();">
<form target="_blank" action="submit.php" onsubmit="alert('submitted);">
<input type="submit" />
</form>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.