在从 OnClientClick javascript 函数返回 true 后执行 OnClick 代码隐藏方法



我有这种情况。这是前端 asp:button 组件。

<asp:Button ID="btnNewsAdd" runat="server" Text="Edit current news item" OnClientClick="return Confirm();" OnClick="btnNewsAdd_Click" UseSubmitBehavior="false"/>

这是Javascript:

<script type="text/javascript">
function Confirm() {
var result = window.confirm('Are you sure?');
if (result == true)
return true;
else
return false;          
}
</script>

用户应该点击"btnNewsAdd"按钮,Javascript应该被触发,并弹出一个带有是或否选项的对话框。单击"是"将返回 true,"否"将返回 false。如果返回 true,则后端中的 ASP.Net 方法:btnNewsAdd_Click应触发。它一直工作到15分钟前。调试时,JS 会越过返回 true 行并进入不是我自己创建的 javascript 文件;但是,后端方法不会触发。

我注意到在"源"部分中,HTML转换为以下内容。正如人们所看到的,OnClick和OnClientClick自动合并到OnClick中。这是自动的,我不知道它是否可能是问题或部分问题。

<input type="button" name="ctl00$MainContent$btnNewsAdd" value="Edit current news item" onclick="return Confirm();__doPostBack(&#39;ctl00$MainContent$btnNewsAdd&#39;,&#39;&#39;)" id="MainContent_btnNewsAdd" />

我真的花了一整天的时间试图绕过它。在某个时候它正在工作,它只是停止工作而没有改变任何东西。任何建议表示赞赏。

正如 Rex 所指出的,以及该线程中的几个解释: 查看其他线程

通过将按钮更改为:

<asp:Button ID="btnNewsAdd" runat="server" Text="Edit current news item" OnClick="btnNewsAdd_Click" OnClientClick="if (!Confirm()) return false;"/>

和Javascript:

<script type="text/javascript">
function Confirm() {
return confirm("Are you sure?");         
}
</script>

问题解决了。

最新更新