jQuery模式对话框多次打开

时间:2014-06-30 14:20:54

标签: javascript jquery asp.net-mvc jquery-dialog

你能帮我理解为什么我的javascript函数多次打开模态弹出窗口?所以如果我第一次点击链接出现模式,那么我关闭它再打开 - 如果我要关闭它我应该按取消两次等。

这是我的代码:

<script type="text/javascript">
  $(function () {

      $('.modal-class').click(function () {
          $("#modal-popup").load(this.href, function () {
              var target = document.getElementsByClassName("modal-popup")
              $(target).dialog({
                  autoOpen: true,
                  closeOnEscape: true,
                  width: 400,
                  resizable: false,
                  title: 'Login Form',
                  modal: true,
                  buttons: {
                      Login: function() {
                      // perform login
                $.post("@Url.Action("Login", "User")",
                {
                    username: $('#Email').val(),
                    password: $('#Password').val()
                },
                function() {
                        $('.modal-popup').dialog("close");
                        $('#main').load("@Url.Action("Index", "User")",
                        {
                            uniqueName: $('#Email').val()
                        });
                });
            },
                      Cancel: function () {
                          $(this).dialog("close");
                      }
                  }
              });
          })
          return false;
      });
  });

3 个答案:

答案 0 :(得分:2)

您只需要初始化模型一次。每当触发click事件时,您都在执行此操作。第一次初始化后,每次都执行以下行打开对话框。

$(target).dialog("open");

此外,您应该将选项'autoOpen'设置为false。否则,当页面加载时,模态将会打开。

答案 1 :(得分:0)

也许在没有你的javascript代码(框架的一部分)的情况下点击模式已经打开?你也有html代码的样本吗?
尝试在此javascript代码的第一行添加e.PreventDefault(),看看会发生什么。

答案 2 :(得分:0)

你需要设置一个样式=&#39; display:none&#39;在modal-popup div上。我非常确定.dialog(&#34; open&#34;)操作的属性。