用户单击确认对话框之前执行服务器单击

时间:2015-02-04 09:03:23

标签: javascript jquery asp.net twitter-bootstrap

我使用ASP.NET

我有一些按钮"删除"删除用户。

<asp:LinkButton ID="lnkDeleteUser" runat="server" OnClientClick="return ValidateDeleteUser();" OnClick="lnkDeleteUser_Click" CssClass=" btn btn-primary" Text="Delete"></asp:LinkButton>

我的ValidateDeleteUser函数如下所示:

    function ValidateDeleteUser() {

    if ($("#hdnNewUserFlag").val() != "Update") {
        Dialogs.Alert("Please select user", null, null);
        return false;
    }

    function okCallBack() {
        return true;
    }

    function cancelCallBack() {
        return false;
    }

    if ($("#hdnNewUserFlag").val() == "Update") {
        Dialogs.Confirmation("Are you sure you want to Delete this User?", okCallBack, cancelCallBack, null);
    }
}

其中Dialogs.Confirmation - 是我的自定义确认对话框。

    var Dialogs = new function() {
    var todo = null;

    function getConfirmModalDialog(title, textBody) {
        // create layout of dialog
        return dialog;
    };

    function getConfirmationtDialog(title, msg, okCallBack, cancelCallBack, callBackObj) {
        var ConfirmationDialog = $('#confirm-dialog');
        if (ConfirmationDialog.length == 0) {
            ConfirmationDialog = getConfirmModalDialog(title, msg);
        } else {
            $('.modal-title', ConfirmationDialog).html(title);
            $('.modal-body', ConfirmationDialog).html(msg);
        }

        $('.ok-btn', ConfirmationDialog).unbind('click').click(function(e) {
            e.preventDefault();
            if (typeof okCallBack === "function") {
                todo = okCallBack(callBackObj);
            }
            ConfirmationDialog.modal('hide');
        });

        $('.cancel-btn', ConfirmationDialog).unbind('click').click(function(e) {
            e.preventDefault();
            if (typeof cancelCallBack === "function") {
                todo = cancelCallBack(callBackObj);
            }
            ConfirmationDialog.modal('hide');
        });

        return ConfirmationDialog;
    };

    this.Confirmation = function (dialogMsg, okCallBack, cancelCallBack, callBackObj) {
        var dlg = getConfirmationtDialog('Confirmation', dialogMsg, okCallBack, cancelCallBack, callBackObj);
        dlg.modal('show');
    };
}

我的问题是下一个:当用户点击&#34;删除&#34;在用户单击confirm-Ok-button之前,按钮,确认对话框打开并执行此服务器端点击。

2 个答案:

答案 0 :(得分:0)

问题是你没有使用像这样的return false

if ($("#hdnNewUserFlag").val() == "Update") {
    Dialogs.Confirmation("Are you sure you want to Delete this User?", okCallBack, cancelCallBack, null);
    return false;
}

在调用Dialogs.Confirmation时,模态会打开,按钮会显示click。但是你没有告诉你的功能等待的click事件。因此,在执行JavaScript代码之后,将执行服务器端事件。

更新:您应该将false返回到调用Dialogs.Confirm的main函数。也就是说,ValidateDeleteUser如上所述。否则主函数将return true

答案 1 :(得分:0)

我想你想要做的就是在拨号服务器上点击确认按钮,回复服务器,而不是让链接按钮回发到服务器。