在MVC ValidationMessageFor上取消jquery button.click

时间:2016-01-12 16:20:04

标签: jquery asp.net-mvc jquery-validate unobtrusive-validation

我有一个使用@ Html.ValidationMessageFor的MVC解决方案以及$('。btn')。click()函数来显示一个简单的“Loading ...”对话框。如果表单验证失败,我想取消此click()函数操作。我查看了jquery.validation.unobtrusive库(并将其包含在我的解决方案中),并且我正在尝试按如下方式进行检查。

    $('.btn').click(function () {
        if ($(this).validate().valid()) {
            $("#initialWaitTableLoad").fadeIn();
        }
    });

此验证检查不起作用,仍在执行fadeIn()方法。如何在验证失败时阻止此操作发生?

2 个答案:

答案 0 :(得分:2)

如果您需要在点击按钮时检查表单的有效性,您可以在点击处理程序中使用.valid()方法并将.valid()附加到form,而不是按钮,就像你做的那样。

$('.btn').click(function () {
    if ($('#myform').valid()) { // test validity of the form
        $("#initialWaitTableLoad").fadeIn();
    }
});

修改

$('#myform')只是我上面的通用示例。检查DOM并使用您希望针对此特定表单的任何jQuery选择器。

答案 1 :(得分:1)

您需要检查表单上的有效性,而不是按钮。在你的情况下,$(this)指的是刚刚点击的按钮。如果可能,编辑您的函数以在表单提交而不是按钮单击上运行。

$('#myform').submit(function () {
    if ($(this).valid()) {
        $("#initialWaitTableLoad").fadeIn();
    }
});