如果在ASP.NET MVC 5应用程序提交有效形式触发模式?(Trigger modal if s

2019-11-04 12:17发布

我创建一个ASP.NET MVC 5应用程序。 有用户点击“提交”按钮,加载下一页面之间漫长的等待时间,所以我想一个“请稍候”模态弹出只有当用户提交一个有效形式。

我曾尝试下面的代码,这会导致模态弹出不管形式是否有效:

$('form').submit(function () {
    $('#waitingModal').show();
});

我的应用程序利用jQuery验证插件和不显眼验证这两个带着创建一个MVC应用程序,所以我想这样的代码:

$('form').submit(function () {
    if ($(this).valid()) {
      $('#waitingModal').show();
    }
});

不过,我收到以下错误:

类型错误:$(...)有效的不是一个函数

该经理的NuGet说,我用jQuery版本1.11.1,jQuery验证1.11.1和jQuery 3.2.3不显眼的工作。

我失去了我的代码的东西吗? 是否有另一种方法?

Answer 1:

感谢您的意见和这个职位 ,我能解决我的问题。 这里发布的解决方案为别人谁运行到这个问题?

我加.validate()我的代码如下所示:

$('form').submit(function () {
  $(this).validate();
  if ($(this).valid()) {
     $('#waitingModal').show();
  }
});

但是跑进相同的错误:

类型错误:$(...)验证是不是一个函数

谷歌搜索和发现后这个帖子 ,我想我会尝试重新安排我的脚本标签。 虽然我的jQuery脚本标签驻留在我的Layout.cshtml,我需要我的脚本标签移动到jQuery验证在窗体的视图脚本标签列表的底部。 现在进行模态弹出我究竟怎么想。

编辑

每其他用户的评论,我删除.validate(); 从我的代码。 所以,我的代码是回这样的:

$('form').submit(function () {
  if ($(this).valid()) {
     $('#waitingModal').show();
  }
});

正如用户所说,代码运行完全正常,而不.validate(); 原来我唯一的问题是我的脚本标记的顺序。



Answer 2:

你需要使用jQuery的Ajax回调函数。 这可能是HTTP POST或GET调用。 为了您的“提交”的情况下,这应该是一个POST调用。

例如:

var element = $('#dialogContent');
element.html('please wait...');
element.dialog("open");

$.ajax(url, {
                data: { "_": $.now() },
                contentType: 'text/html',
                dataType: 'html',
                type: 'POST'
            }).done(function (data) {
                        setTimeout(function () {
                            element.html(data);
                        }, 100);
                        return false;
            }).fail(function (error) {
                     element.html('Show error information here..');
            }
       );


文章来源: Trigger modal if submitting valid form in ASP.NET MVC 5 application?