ASP.NET 3.5 onClientClick возвращает false, не работает - PullRequest
1 голос
/ 06 октября 2011

У меня есть следующий код:

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

Событие OnClientClick на моей кнопке BtnImprimir происходит нормально, если у меня есть файлы cookie, отображается диалоговое окно подтверждения, но не имеет значения, отвечаю я ДА илиНет в диалоговом окне подтверждения ... всегда выполняется onClik.

Ответы [ 3 ]

4 голосов
/ 06 октября 2011

Используйте 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"/>
1 голос
/ 06 октября 2011

Вам необходимо добавить инструкцию возврата:

OnClientClick = "return imprimeTesis();" 
0 голосов
/ 09 мая 2018

Обновление: в VS2017 если UseSubmitBehavior имеет значение False, C # добавляет собственный вызов функции к событию onclick

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

Итак, я изменил функцию return () на if (! Function ()) return;

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

это решило мою проблему.

...