【问题标题】:Confirm box always displays first (javascript, jQuery, .Net)确认框总是首先显示(javascript、jQuery、.Net)
【发布时间】:2010-06-10 09:24:10
【问题描述】:

我有一个 jQuery 脚本来完成以下任务:

  • 如果我的表单中的 gridview 包含具有特定 id 的行,它必须是 标记为红色。
  • 必须弹出确认对话框,询问用户是否要这样做或那样。

我构建了这段代码:

if (response == "EntryInList") {               
            $('#entryListContainer div table tbody tr').each(function() {                  
                if ($(this).attr('id') == 'entry_' + $('#<%= txtProductNumber.ClientID  %>').val()) {
                     $(this).css("color", "red");
                }
            }
            );

            if (!confirm("Entry already exists. Really overwrite?")) {
                jQuery('#<%= txtProductNumber.ClientID  %>').val('');
                jQuery('#<%= txtCount.ClientID  %>').val('');
                jQuery('#<%= txtProductNumber.ClientID  %>').focus();
                return false;
            }
        }

结果,确认框首先弹出,而该行没有变成红色。仅在那之后 使用盒子,它变成红色。如何让该行立即变为红色?

我的另一个问题是确认框拒绝我的页面向下滚动。但 如果 gridview 比整个页面长,我想这样做。

【问题讨论】:

    标签: .net javascript jquery


    【解决方案1】:

    在您的 JavaScript 代码完成执行并且confirm 对话框为模态之前,显示不会更新,这将暂停所有脚本,直到对话框关闭。这意味着在框关闭之前,您不会看到对文档的任何更改,即使这些更改已经发生。

    一个可行的解决方案可能是使用setTimeout(function () {}, 0) 显示该框,但您可能需要稍微修改其他代码。

    【讨论】:

    • 如果使用setTimeout,无论如何都会执行confirm之后的代码:(
    • @Jan-Frederik Carl:我确实预料到了这一点,因此不得不重新编写您的代码。这将涉及将confirm 移动到计时器范围后的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多