ASP.NET按钮,OnClientClick不工作



我有一个同时声明了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错误。

正如其他人建议的那样-避免文档。像瘟疫一样准备好了。

现在不要把这个建议的规则视为要么全有要么全无。简单的问题是,当你需要使用document.ready-然后使用它,但当你可以避免使用它时,不要突然使用它来连接事件代码-这真的很难遵循。

现在,你发布了你的标记——我不知道你是否遗漏了部分,但同样,当代码不起作用时,你想提供更多的细节。

你的代码应该是这样的:

<cms:CMSButton ID="btnOk" OnClientClick="clientClick()" OnClick="btnOK_Click"
runat="server" ButtonStyle="Default"
EnableViewState="false"></cms:CMSButton>
<script>
function clientClick() {
console.log("Clicked");
document.getElementById("<%=spinner.ClientID  %>").style.display = "block";
document.getElementById("<%= btnOk.ClientID%>").style.display = "none";
}
</script>

所以你有一个函数,你有一块onclick,你有个同名的js函数。这里的代码方法很好,很简单。是代码隐藏,还是页面中的js代码?编写一个函数,然后指定该函数。保持简单。

事实上,我经常建议你把右键放在按钮下面,这样你就不必在页面上到处寻找标记中的例程了。

最新更新