【问题标题】:Executing OnClick code behind method after returning true from OnClientClick javascript function从 OnClientClick javascript 函数返回 true 后执行方法后面的 OnClick 代码
【发布时间】:2017-08-24 16:12:32
【问题描述】:

我有这种情况。这是前端的 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,则后端中的 ASP.Net 方法:应该触发 btnNewsAdd_Click。它一直工作到 15 分钟前。调试时,JS 会跳过 return true 行并进入不是我自己创建的 javascript 文件;但是,后端方法不会触发。

我注意到在 Sources 部分中,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" />

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

【问题讨论】:

标签: javascript asp.net


【解决方案1】:

正如 Rex 所指出的,并且正如该线程中的几个人所解释的那样:See other thread

通过将按钮更改为:

<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>

问题解决了。

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多