【问题标题】:javascript confrmation box, executing code behind only if clicked yesjavascript确认框,仅在单击“是”时才执行后面的代码
【发布时间】:2013-09-15 09:41:37
【问题描述】:

这是在我之前的问题之后..How to reload parent page on closing PopUp window?

我尝试了多种方法的组合,但无法使其工作。有时无论我选择什么,后面的代码都会执行。 "yes" , "no" 或 x(to close) , 有时.. 就像下面的代码一样.. 无论我点击什么选项,后面的代码都不会被执行..

      <asp:Button ID="btnAccept" runat="server" Text="Accept"  OnClientClick="return Refresh()" style="HEIGHT: 19px;background: #C0003B;color: white; " /> &nbsp;<asp:Button ID="btnReject" runat="server" Text="Reject" OnClientClick="Refresh()" style="HEIGHT: 19px;background: #C0003B;color: white;"/>


</div>
   <script type="text/javascript">

       function Refresh() {
           var myBoolean = new Boolean();
           myBoolean = confirm('Are you sure?');

           if (myBoolean) {

               window.onunload = refreshParent;

               function refreshParent() {    
                   window.opener.location.reload();
                   return true;
               }
           }
           else {return false;}
       }
</script>

【问题讨论】:

    标签: c# javascript asp.net vb.net


    【解决方案1】:

    看看这个

    function Refresh() {
        var confirmed = confirm('Are you sure?');
    
        if (confirmed) {
            window.onunload = refreshParent;
            return true;
        } else {
            return false;
        }
    }
    
    function refreshParent() {
        window.opener.location.reload();
    }
    

    【讨论】:

    • 你们@johan 和 bibhu 都发布了有效的解决方案,但由于您是第一个发布的人,我将您的标记为答案。谢谢你们俩。 :)
    【解决方案2】:

    不要使用服务器端按钮。这些元素旨在执行服务器中的操作。

    那你猜怎么着?为了在服务器上执行操作,这需要发生:

    • 浏览器提交表单发出 POST 请求
    • 服务器解析表单数据并识别按下了哪个按钮
    • 服务器调用按钮的注册事件处理程序。

    因此,在您的情况下,我将取消客户端按钮的 onclick 事件。或者更简单...只需使用普通的 HTML 按钮。

    <button id="btnAccept" onclick="Refresh()" style="HEIGHT: 19px;background: #C0003B;color: white; "> Accept </button>
    

    【讨论】:

    • else 返回带有 onClientClick="return Refresh()" 的假链,因此它是取消按钮上的单击事件的一种解决方法。这就是为什么我说,你可以在客户端“取消”点击事件,
    • 无论如何,对于需要在客户端执行的代码,使用服务器端按钮真的很糟糕。
    • 谢谢,从现在开始我会牢记这一点。我没有使用客户端控件的原因是我必须使用WebMethod
    • WebMethod?为什么? alert() 根本不需要 web 方法。
    • 它不是要提醒它后面执行代码,我想在用户单击接受或拒绝按钮并用 Yes 确认选择时执行后面的代码。如果我使用简单的 html 按钮,我不需要 WebMethod 来执行代码吗?
    【解决方案3】:

    试试这个

       function Refresh() {
           var myBoolean = new Boolean();
           if (confirm('Are you sure?')) {
    
           window.onunload = refreshParent;
           function refreshParent() {
    
               window.opener.location.reload();
               return true;
           }
       }
           else {return false;}
       }
    

    【讨论】:

    • 谢谢,您的解决方案运行良好,但自从 Johan 首先发布解决方案后,我已将他的帖子标记为答案.. 谢谢 :) +1
    • @Arbaaz - 很高兴为您提供帮助。 :)
    • 这段代码有一个小问题...当我点击x(关闭弹出窗口)后面的代码被执行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多