【发布时间】:2021-09-05 01:50:08
【问题描述】:
我的按钮同时声明了 OnClick 和 OnClientClick 事件。
我希望在回发发生之前完成一些特定的任务,但出于某种奇怪的原因 OnClientClick 从未被触发。我以前用过很多次,从来没有遇到过这个问题。
它有问题,我也尝试直接添加'return false'以防止服务器端处理但仍然发生回发。
我检查了我的表单是否在 UpdatePanel 中,但它不在。
<cms:CMSButton ID="btnOk" OnClientClick="clientClick()" OnClick="btnOK_Click" runat="server" ButtonStyle="Default"
EnableViewState="false"></cms:CMSButton>
$(document).ready(function () {
function clientClick() {
console.log("Clicked");
document.getElementById("<%=spinner.ClientID %>").style.display = "block";
document.getElementById("<%= btnOk.ClientID%>").style.display = "none";
}
});
我也尝试以这种方式触发事件,但没有运气,所以这里可能发生了其他事情:
$('#<%=btnOk.ClientID%>').click(function () {
console.log('clicked');
});
检查了控制台但没有发现任何js错误。
【问题讨论】:
-
您不能将
function clientClick() {放入$(document).ready(function () {中,从那里删除并重试。同样在您点击后立即回发,因此您可能看不到 console.log,除非您保留历史记录 -
是的,但我至少应该看到它,直到页面完成重新加载。我也尝试直接从 OnClientClick 返回 false 以防止回发,但回发仍然发生。我删除了 document.ready 但没有更改。
-
执行
OnClientClick="clientClick();return false;"或OnClientClick="return clientClick();"然后在函数内返回false -
已经试过了,还是不行。
标签: javascript asp.net webforms