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