如果表单有效,如何触发jQuery函数

Sco*_*ott 50 javascript jquery boolean unobtrusive-validation

我有一个jQuery函数绑定到我的提交按钮,如下所示:

$(function () {
    $('#signupform').submit(function () {
        alert('test');
    });
});
Run Code Online (Sandbox Code Playgroud)

但是,无论表单是否有效,它都会触发.我的模型摆放着很多DataAnnotations和客户端验证工作良好,但我只想说jQuery函数解雇如果表单已经过验证.我该如何做到这一点?

编辑:澄清一下,我正在使用MVC DataAnnotations + jQuery的不显眼的javascript来处理客户端验证.我没有写自己的javascript验证例程.内置的jQuery验证在验证表单方面做得很好,但我只需要知道如何在我自己的函数中将验证结果转换为布尔值.

Dar*_*rov 120

如果您使用jquery验证不显眼的验证,您可以:

$(function () {
    $('#signupform').submit(function () {
        if($(this).valid()) {
            alert('the form is valid');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 要**避免两次提交表单**,请添加`event.preventDefault();`检查[this](http://stackoverflow.com/questions/5127813/call-mvc-3-client-side-validation-manually-for -ajax-posts)和[this](http://stackoverflow.com/questions/15703817/submit-action-getting-hit-hit-twice-while-using-jquery-ui-dialog),希望对您有所帮助。 (3认同)

Jar*_*ish 8

$(function () {
    $('#signupform').submit(function (e) {
        if (validateForm() === true) {
            alert('Form is valid.');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

注意,该validateForm()函数将是您在浏览器中用于测试验证的函数.编辑:这确实是jQuery的$(this).valid().

注意:在澄清问题时,上面的答案是停止表单提交验证的一种方法,而不是所需的技术(jQuery valid()验证).有关详细信息,请参阅Darin Dimitrov的答案.

此外,在重读原始问题时,意图与我最初描述的完全相反.因此,我编辑了演示验证的功能响应,而不是如何阻止提交表单.