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

jQuery验证失败,除非调用$(';#form';)。valid(),jquery,Jquery,我有一个使用大量jQuery的大型应用程序,今天我在测试中遇到了一个无法正确验证的页面。我保存了一份页面副本,并删除了所有其他jQuery,除了验证我遇到问题的单个字段的代码 在以下代码中,它可以完美地工作: <script type="text/javascript"> $(document).ready(function () { $('#btnSave').click(function (e) { validateRegisterForm(e); });

我有一个使用大量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>

$(文档).ready(函数(){
$('#btnSave')。单击(函数(e){validateRegisterForm(e);});
});
函数validateRegisterForm(e){
$('#EMasterForm').validate();
警报('验证结果为:'+$('#EmasterForm').valid());
$('#txtmaxcomment')。规则
('add',{
要求:正确,
最小长度:2,
});//规则结束(添加)函数调用
if($('#EmasterForm').valid()==false){
e、 预防默认值();
}
}
但是,如果我对警报进行注释,它将不起作用。警报始终显示“真”值

这对我来说似乎是个愚蠢的问题。但我还有50页,就像发条一样。我在这件事上做得不够。我们在任何地方都使用jquery进行各种操作。但这一页不起作用

有人能解释为什么警报会起作用吗?我很高兴被回答这个问题的人惩罚:)


提前谢谢你

我假设您有btnSave as submit按钮

您正在尝试绑定submit按钮的validate onclik。因此,在单击submit事件时,没有进行任何验证,这就是您需要再次调用.valid()的原因

我建议只移动$('#EMasterForm')。validate()和规则相关的代码位于单击的外侧,您不需要在单击事件上绑定任何内容

只要跟着做,你就完成了

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

jQuery验证函数和所有其他函数都需要在DOM就绪时初始化。如上所述,$('#您的_表单_ID').validate();应在文档准备中调用。 查看演示,它肯定会对您有所帮助


谢谢您的回复。我至少有30页以完全相同的方式进行验证,只有这一页失败。但我尝试了你所说的,得到了同样的结果。我看不出将validate放在ready()函数中或在click事件中调用的函数中有什么区别。为了回答你的另一个问题,btnSave被定义为一个asp:LinkButton,你可以发布更多的信息。就像HTML结构和您正在使用的其他JS一样。如果上述解决方案不起作用,则此页上肯定有其他影响。-------------还有一件事,当用户在任何表单字段上按enter键时,使用“内部验证”单击会跳过验证。问题已解决,但不确定原因:(当我将验证行改为该行时,它工作正常:$(“#EmasterForm”).validate({errorPlacement:function(error,element){return true;});