我的页面上有一个ASP:Button
。它呈现为 HTML,如下所示:
<input type="submit" name="myButton" value="Do something"
onclick="javascript:WebForm_DoPostBackWithOptions(
new WebForm_PostBackOptions('myButton', '', true, '', '', false, false))"
id="myButton" />
现在我试图通过 jQuery 事件处理程序阻止此按钮的默认行为(提交表单):
$('#myButton').click(function () {
// do some client-side stuff
if (someCondition) {
// don't postback!
return false;
}
});
这里的问题是 ASP 粘贴在输入上的内联单击处理程序似乎每次都在 jQuery 事件处理程序之前执行。
这里最简单的解决方案是使用普通的input type="button"
而不是ASP:Button
,不幸的是这不是可能的 因为此 ASP:Button
可以执行此场景中所需的许多其他操作。
防止表单提交发生的最佳方法是什么?我曾考虑过使用字符串操作将处理程序添加到元素的 onclick
属性上,但这看起来真的很脏。我还想避免使用 OnClientClick
因为这需要公开公开我的处理程序函数。有更好的办法吗?
最佳答案
您是否尝试过将 OnClientClick="return false;"
属性添加到您的 aspx 按钮控件中?
不用担心,看看这篇文章,它提供了一个 javascript 事件卸载器脚本:Is it possible to remove all event handlers of a given element in javascript?
我认为您对最后一个方法 DomLib.prototype.removeEventsByTypeEx 感兴趣
关于javascript - 如何防止ASP :Button from posting back from a jQuery click handler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11891249/