为什么asp:当clientClick返回true时,不会触发LinkBut​​ton服务器端事件

时间:2015-03-01 08:22:49

标签: javascript jquery asp.net events server-side

我有asp:带LinkBut​​ton的GridView:

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton ID="Cancel"  runat="server" OnClick="Cancel_Click" OnClientClick="return confirmCancel(this);">cancel</asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>

我希望只有在confirmCancel返回true时才会发生服务器端事件 但我有一个奇怪的问题:

如果函数显式返回true -

return true;

事件发生。

如果函数显式返回false -

return false;  

事件不会发生。

但如果函数返回带有true或false的变量 -

return x;  

事件不会发生。

我放了调试器,看到x的值为true或false,并且没有未定义或者什么 问题是什么?

confirmCancel:

function confirmCancel(sender) {

        var msg = "are you sure you want to cancel?"
        var x = myConfirm(msg, sender);
        return x;
}

myConfirm:

function myConfirm(msg, sender) {
            if ($('#myConfirm').hasClass("hide")) {
                $('#myConfirm').removeClass("hide");
                $('#myConfirm p').text(msg);
                $("#myConfirm input#btn-ok").unbind("click").click(function () {
                    $(sender).click();
                    return false;
                });
                return false;
            }
            else {
                $('#alertify').addClass("hide");
                return true;
            }                
        }

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您可以使用解决方法直到发现问题:

function confirmCancel(sender) {

        var msg = "are you sure you want to cancel?"
        var x = myConfirm(msg, sender);
        if (x == true)
        {
             return true;
        }
        else
        {
            return false;
        }

}