簡體   English   中英

在用戶單擊確認對話框之前執行服務器單擊

[英]Server click executes before user click on confirmation dialog

我使用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');
    };
}

我的問題是下一個:當用戶單擊“刪除”按鈕時,將打開確認對話框,並在執行服務器端單擊之后,在用戶單擊確認-確定按鈕之前。

問題是您沒有使用像這樣的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代碼之后,將執行服務器端事件。

更新:您應該向調用Dialogs.Confirm的主函數返回false。 也就是說,如上所述完成ValidateDeleteUser 否則主函數將return true

我猜您想做的是使回發到服務器的Dialouge點上的確認按鈕,而沒有鏈接按鈕進行回發到服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM