【问题标题】:ASP.NET 3.5 onClientClick return false not workingASP.NET 3.5 onClientClick 返回 false 不起作用
【发布时间】:2011-10-06 18:22:49
【问题描述】:

我有以下代码:

    <script language="javascript" type="text/javascript">
    function readCookie(name)
    {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++)
        {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    }

    function imprimeTesis()
    {
        valor = readCookie("Marcadas");

        if (valor == null) return true;
        var resultado = true;
        if (valor == "1")
        {
           resultado = confirm("¿Quiere imprimir todas las tesis marcadas? Si contesta no imprimirá sólo la actual ");
        }
        return resultado;
    }
</script>
<asp:Table ID="Table1" runat="server" Height="46px" Width="696px">
    <asp:TableRow runat="server">
    <asp:TableCell ID="TableCell1" runat="server">
        <asp:ImageButton runat="server" ID="BtnGuardar" style="cursor: hand"
                     onmouseover="this.src = '../images/GUARDAR2.png';"
                     onmouseout = "this.src = '../images/GUARDAR1.png';"
                     OnClick="BtnGuardar_Click"  ImageUrl="../images/GUARDAR1.png"/>
        </asp:TableCell>
        <asp:TableCell ID="TableCell2" runat="server">
        <asp:ImageButton runat="server" ID="BtnImprimir" style="cursor: hand"
                     onmouseover="this.src = '../images/IMPRIMIR2.png';"
                     onmouseout = "this.src = '../images/IMPRIMIR1.png';"
                     OnClientClick = "imprimeTesis()"
                     OnClick="BtnImprimir_Click"  ImageUrl="../images/IMPRIMIR1.png"/>
        </asp:TableCell>

我的 BtnImprimir 按钮上的 OnClientClick 事件被触发 OK,如果我有 cookie,则会显示确认对话框,但我在确认对话框上响应 YES 或 No 都没有关系...... onClik 总是被执行。

【问题讨论】:

    标签: c# asp.net onclick onclientclick


    【解决方案1】:

    使用OnClientClick = "return imprimeTesis();"。您需要将函数的结果返回给控件。

    <asp:ImageButton runat="server" ID="BtnImprimir" style="cursor: hand"
                     onmouseover="this.src = '../images/IMPRIMIR2.png';"
                     onmouseout = "this.src = '../images/IMPRIMIR1.png';"
                     OnClientClick = "return imprimeTesis();"
                     OnClick="BtnImprimir_Click"  ImageUrl="../images/IMPRIMIR1.png"/>
    

    【讨论】:

    • 在 VS2017 中,这仅在 UseSubmitBehavior="True" 时有效,我需要捕获键,如果 usesubmitbehavior 为 true,则 enter 键会从页面上的任何位置触发按钮。这是不可接受的。所以我仍在研究解决方案。
    【解决方案2】:

    需要添加return语句:

    OnClientClick = "return imprimeTesis();" 
    

    【讨论】:

      【解决方案3】:

      更新:在 VS2017 中 如果 UseSubmitBehavior 为 False C# 将自己的函数调用添加到 onclick 事件

      onclick="doPostBack(&#39;ctl00$ContentPlaceHolder1$AddBtn&#39;,&#39;&#39;)" 
      

      所以我把 return function() 改成了 if(!function()) return;

      onclick="if(!ValidWorkOrder()) return;__doPostBack(&#39;ctl00$ContentPlaceHolder1$AddBtn&#39;,&#39;&#39;)"
      

      这解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-23
        • 2016-05-18
        • 2021-09-05
        • 2015-07-13
        • 2018-12-05
        • 1970-01-01
        • 2011-10-12
        • 2021-12-10
        相关资源
        最近更新 更多