javascript - 如何禁用双击 Jquery 模态对话框按钮?

标签 javascript jquery

我正在使用 Jquery 模态对话框将一些数据提交到服务器端,然后保存到数据库中;这里我的模式对话框代码是:

    function loadUserDialog(tag, event, target, id) {
            event.preventDefault();

$.validator.unobtrusive.parse('#frmModalPopup');

            var $loading = $('<img src="@Url.Content("~/Content/images/ajaxLoading.gif")" alt="loading" class="ui-loading-icon" style="margin: 150px 150px;">');
            var $url = $(tag).attr('href');
            var $title = $(tag).attr('title');
            var $dialog = $('<div></div>');
            $dialog.empty();
            $dialog
            .append($loading)
            .load($url)
              .dialog({
                  autoOpen: false
               , title: $title
               , width: 500
               , modal: true
               , minHeight: 400
               , show: 'fade'
               , hide: 'fade'
              });
            $dialog.dialog("option", "buttons", {
                "Submit": function () {
                    var dlg = $(this);
                    if (IsValidUserName() && $('#frmModalPopup').validate().form()) {
                        $.ajax({
                            url: $url,
                            type: 'POST',
                            data: $(target).serialize(),
                            success: function (response) {
                                var cid = $(response).attr('id');
                                if (cid != null && cid != undefined) {
                                    $(response).fadeIn('slow').appendTo(id);
                                    $(window).scrollTop($('#' + cid).offset().top);
                                }

                                dlg.dialog('close');
                                dlg.empty();
                            },
                            error: function (xhr) {
                                alertMessage("EmailId is already in use!");
                                $.validator.unobtrusive.parse('#frmModalPopup');
                            }
                        });
                    }
                },
                "Cancel": function () {
                    $(this).dialog('close');
                    $(this).empty();
                }
            });

            $dialog.dialog('open');
        };

但是,当我多次单击“提交”按钮(多次)时,表单会被提交多次,并且我会收到重复的数据提交信息。那么您能否告诉我如何禁用双击或多次单击“提交”按钮。

最佳答案

首次提交时禁用对话框,在继续之前检查它是否已禁用,如果已禁用则返回。

"Submit": function () {
  if ($(this).hasClass("disabled"))
    return;

  $(this).addClass("disabled");

  // continue;
}

编辑:您可以使用此方法来添加一些额外的用户界面响应能力,方法是在禁用它时添加“正在工作...”或其他一些消息

$(this).addClass("disabled");
$dialog.append("Working...");

关于javascript - 如何禁用双击 Jquery 模态对话框按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546653/

相关文章:

javascript - Bootstrap 轮播不工作!一切都检查过了,仍然无法正常工作

javascript - Passport 认证中的独特模式

javascript - ngApp 不使用任何特定的模块名称

javascript - 通过数据属性获取元素id

jquery - Svg 同时在 2 行上设置带有动画的新坐标

javascript - 计算并自动填充动态元素

javascript - 如何使用 JQuery 为“下一个”和“上一个”按钮创建有效的方法来显示/隐藏单个 HTML 页面的部分?

javascript - 如何记住提交/刷新后使用的最后一个选项卡?

javascript - 仅当表单已提交时才触发 jQuery 表单验证?

javascript - 无法使用 jsColor 获取 jQuery 中按钮的颜色