我有一个使用大量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进行各种操作。但这一页不起作用。
任何人都可以阐明为什么警报会使其发挥作用?我很高兴受到任何人的批评:)
提前谢谢!
答案 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中调用。 查看演示,它一定会对您有所帮助。