Javascript事件处理程序在默认行为之后执行
Javascript event handler to execute after default behavior
在Javascript中,我如何附加一个事件处理程序,使其在默认操作后运行?
<form target="_blank" action="submit.php" onsubmit="doThisAfterSubmit()">
<input type="submit" onclick="doThisAfterSubmit()" />
</form>
类似但不充分的堆栈溢出问题:
javascript:是否可以添加在默认行为之后运行的事件处理程序?
如何在JavaScript中执行默认操作后捕获事件
我已经读过这些,但他们正在处理使用诸如keyup
/keypress
等变体解决的击键事件。我所见过的唯一其他解决方案是setTimeout()
方法。我希望避免使用setTimeout()
,如果存在的话,我希望使用更优雅的解决方案。
我的用例是我想在提交后从DOM中删除表单。
您可以自己执行默认操作,然后执行您想要的操作,然后阻止默认操作运行。
<form target="_blank" action="submit.php"
onsubmit="this.submit(); doThisAfterSubmit(this); return false;">
<input type="submit" />
</form>
注意:在"onsubmit"中调用this.submit()
不会像你想象的那样导致无限循环。
EDIT:我原来的jsfiddle只在表单提交后显示文本。我又试了一次,但改变了它,去掉了你想要的形式。这导致表单不再提交,即使首先调用this.submit()
。在这种情况下,可以使用setTimeout()
延迟窗体的删除,直到原始线程完成执行,如下所示:
function doThisAfterSubmit(form) {
setTimeout(function() {
$(form).remove();
}, 0);
};
现在表单在被删除之前已经提交。
<<p> jsfiddle演示/strong>你可以用事件冒泡代替:
<div onclick="this.remove();">
<form target="_blank" action="submit.php" onsubmit="alert('submitted);">
<input type="submit" />
</form>
</div>
相关文章:
- 如何在`window.open`之后执行回调
- 在$state.go之后执行$window.location.reload(true)
- Javascript:在每个onmouseover事件之后执行2个函数
- 可以使 jquery 点击事件在所有其他点击事件之后执行
- 在两个元素的 onrender 事件之后执行函数
- 流星技术/模式,用于等待数据库变量更改,然后在 in 之后执行某些操作
- 在jQuery .load Ajax之后执行if-statement
- 使javascript在firefox中的插件javascript之后执行
- 在catch之后执行
- 是否可以在特定的console.log()条目之后执行Javascript函数
- oncomplete 方法并不总是在操作 JSF 之后执行
- nodejs:setImmediate 回调在 setTimeout(fn, 0) 之后执行,与 nodejs 文档描述
- 为什么我不能在我的OnclientClickEvent之后执行我的onClick
- 在 ajax 之后执行数据表或重新绘制表
- 在 jQuery / Javascript 中的 bind() 事件之后执行条件
- 如何使 jQuery 语句在 .load() 之后执行
- 在具有 FS 操作的 FOR 循环之后执行
- 在 dgrid renderRow 之后执行一个函数
- window.print() 之后的 Javascript 有时在打印对话框之前执行,有时在打印对话框之后执行
- 在 3SE 之后执行函数