1

我有一个使用大量 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 进行各种操作。但是这一页是行不通的。

任何人都可以解释为什么警报会使其起作用吗?我很高兴被回答这个问题的人责备:)

先感谢您!

4

2 回答 2

2

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

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

我建议只是移动 $('#EMasterForm').validate(); 和规则相关的代码在点击之外,你不需要在点击事件上绑定任何东西。

只需执行以下操作,您就完成了。

 $(document).ready(function () {
        $('#EMasterForm').validate();
        $('#txtMaxCommute').rules                 
            ('add', { 
                required: true, 
                minlength: 2,
            }); // end of rules(add) function call
 })
于 2012-07-12T02:44:49.370 回答
0

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

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

于 2012-07-12T07:16:44.753 回答