jQuery验证失败,除非调用$('#form')。valid()

时间:2012-07-12 02:20:59

标签: jquery

我有一个使用大量jQuery的大型应用程序,今天我在测试中遇到了一个无法正确验证的页面。我已经保存了该页面的副本并删除了除代码之外的所有其他jQuery,以验证我遇到问题的单个字段。

在以下代码中,它完美运行:

<script type="text/javascript">
    $(document).ready(function () {
        $('#btnSave').click(function (e) { validateRegisterForm(e); });
    });

    function validateRegisterForm(e) {

        $('#EMasterForm').validate();
        alert('validation result is : '+ $('#EmasterForm').valid());
        $('#txtMaxCommute').rules                 
            ('add', { 
                required: true, 
                minlength: 2,
            }); // end of rules(add) function call

            if ($('#EmasterForm').valid() == false) {
                e.preventDefault();
        }
    }


</script>

但如果我注释掉警报,它就不起作用了。警报始终显示“真实”值。

这对我来说似乎是一个愚蠢的问题。但我有50个其他页面验证像发条。而且我在这个方面做得不够。我们在各地使用jquery进行各种操作。但这一页不起作用。

任何人都可以阐明为什么警报会使其发挥作用?我很高兴受到任何人的批评:)

提前谢谢!

2 个答案:

答案 0 :(得分:2)

我假设你有btnSave作为提交按钮。

您正在尝试绑定提交按钮的验证onclik。所以在点击提交时,事件没有做任何验证,你需要再次调用.valid()。

我建议只需移动 $('#EMasterForm')。validate(); 和规则相关代码,然后你就不需要在点击事件上绑定任何内容。

只需按照以下方式完成。

 $(document).ready(function () {
        $('#EMasterForm').validate();
        $('#txtMaxCommute').rules                 
            ('add', { 
                required: true, 
                minlength: 2,
            }); // end of rules(add) function call
 })

答案 1 :(得分:0)

jQuery验证函数和所有其他函数需要在DOM准备好初始化。如上所述$('#YOUR_FORM_ID')。validate();应在Document ready中调用。 查看演示,它一定会对您有所帮助。

http://jquery.bassistance.de/validate/demo/