km6*_*zla 5 javascript jquery events jquery-events
在 Javascript 中,如何附加事件处理程序以便它在默认操作后运行?
<form target="_blank" action="submit.php" onsubmit="doThisAfterSubmit()">
<input type="submit" onclick="doThisAfterSubmit()" />
</form>
Run Code Online (Sandbox Code Playgroud)
类似但不充分的 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>
Run Code Online (Sandbox Code Playgroud)
注意:调用this.submit()
“onsubmit”不会像您想象的那样导致无限循环。
编辑:我原来的 jsfiddle 仅在表单提交后显示文本。我又试了一次,但将其更改为按照您想要的方式删除表单。这导致表单不再提交,即使是this.submit()
首先调用的。在这种情况下,您可以setTimeout()
延迟删除表单,直到原始线程完成执行,如下所示:
function doThisAfterSubmit(form) {
setTimeout(function() {
$(form).remove();
}, 0);
};
Run Code Online (Sandbox Code Playgroud)
现在,表单在删除之前已提交。