54

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

$(function () {
    $('#signupform').submit(function () {
        alert('test');
    });
});

但是,无论表单是否有效,它都会触发。我的模型装饰有各种 DataAnnotations 并且客户端验证运行良好,但我只希望 jQuery 函数在表单经过验证时触发。我该如何做到这一点?

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

4

2 回答 2

129

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

$(function () {
    $('#signupform').submit(function () {
        if($(this).valid()) {
            alert('the form is valid');
        }
    });
});
于 2011-02-19T17:31:24.980 回答
8
$(function () {
    $('#signupform').submit(function (e) {
        if (validateForm() === true) {
            alert('Form is valid.');
        }
    });
});

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

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

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

于 2011-02-19T17:30:16.307 回答