javascript - 需要停止 javascript 的确认窗口

标签 javascript jquery asp.net ajax

我遇到了需要停止确认框的情况。这就是我所做的:

function onBeforeClientInsert(record) {
    var eventtype = parseInt(record. < %= CEO.FieldEvaluator.GetEvaluatorByDId("EVENT_TYPE_ID").GetFieldDataFieldId() % > );
    var begindate = record. < %= CEO.FieldEvaluator.GetEvaluatorByDId("BeginDate").GetFieldDataFieldId() % > ;
    var enddate = record. < %= CEO.FieldEvaluator.GetEvaluatorByDId("EndDate").GetFieldDataFieldId() % > ;

    $.ajax({
        type: "POST",
        url: "Data.aspx/CheckInsertRecord",
        data: "{EventType:'" + eventtype + "',BeginDate:'" + begindate + "'," + "EndDate:'" + enddate + "' }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {

            if (msg.d == "No duplicate") {

            } else {
                alert(msg.d);
                eval("var data = " + msg.d + ";");

            }
            var i = 0;
            alert(i);
            alert(data[i]);
            do {
                $("#beginDate").html(data[i].BeginDate);
                $("#eventTypeID").html(data[i].EVENT_TYPE_ID);
                $("#endDate").html(data[i].EndDate);
                $("#beginlatlong").html(data[i].BeginLATLONG);
                $("#endlatlong").html(data[i].EndLATLONG);

                var modal = document.getElementById('Div1');
                modal.style.display = '';
                modal.style.position = 'fixed';
                modal.style.zIndex = '100';
                modal.style.left = '30%';
                modal.style.top = '10%';


                var screen = document.getElementById('modalScreen');
                screen.style.display = '';
                i++;
                if (confirm("Are you sure you want to continue?") == false) {
                    hide();
                    continue;
                }


            }

            while (msg.d != null);
        }
    });


    if (confirm("Are you sure you want to insert this new record ?") == false) {
        hide();
        return false;
    }
    if (Page_ClientValidate("<%= CEO.GridUtils.Global_ValidationGroupName%>")) {
        hide();
        SetPostBackCause('INSERT');
        return true;
    }
    return false;
}

所以,问题是

if (confirm("Are you sure you want to insert this new record ?") == false) {
    hide();
    return false;
}

确认框后立即运行

if(confirm("Are you sure you want to continue?")==false){
    hide();
    continue;
}

但我希望它停止,直到用户单击第一个确认框中的某些内容。你能让我知道该怎么做吗?另外,如果我以错误的方式处理它,你能让我知道任何其他方法吗?

最佳答案

Ajax 是异步的。

您需要将所有相关代码移至success回调中。

success: function (msg) {
    // snip ...
    
    if (confirm("Are you sure you want to insert this new record ?") == false) {
        hide();
    }
    if (Page_ClientValidate("<%= CEO.GridUtils.Global_ValidationGroupName%>")) {
        hide();
        SetPostBackCause('INSERT');
    }
}

可以使用async: false使请求同步,但我推荐这样做。

关于javascript - 需要停止 javascript 的确认窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499887/

相关文章:

javascript - 如何将 DataTables 按钮定位到浏览器的右上角?

javascript - VM4784 :1 Uncaught ReferenceError: pay is not defined

javascript - 在现有代码上实现新的图像叠加(HTML5 和 CSS 3)

ASP.NET 成员(member)资格基于 Web 的管理

c# - 将 boolean 值转换为 session 变量

javascript - 如何以 Angular 返回相互依赖的多个$http请求?

jquery - 在倒计时的特定时间后更改问题以及是否应切换倒计时

jquery - UI可拖动+可放置附加到任何地方?

ASP.Net 报表查看器 - 使用不同的参数值多次生成相同的报表

javascript - DOM操作后如何防止页面滚动位置重置?