我正在尝试用http://docs.jquery.com/Plugins/Validation实现Jquery验证:
我的设计计划:
$(document).ready(function() { $('.val-req').rules('add',{required:true});});
function validate_form(form_id,callback) { var form = $('#'+form_id);$('.val-req').each(function() {$(this).rules('add',{required:true});});$(form).validate({ errorElement:"span",errorClass:“val-.validate”,validClass:"val-valid",errorPlacement: function(error,element) {function(error,element){function},submitHandler:回调});}
根据我的预期,它应该在表单的占位符范围中显示错误消息。
但是,Problem
Chrome-Console上出现
设置错误:未捕获设置:无法读取未定义的属性‘’
它在其他浏览器上也会出现错误。然后,我试图找出问题所在,并发现:
$('.val-req').rules('add', {required:true}); # This is causing the error
因为,根据我的理解和文档->,这应该是正确的。
为什么这会导致TypeError,我可以做些什么来解决它?
发布于 2013-04-10 19:52:10
在表单元素中调用验证插件后,必须添加规则:
$("form").validate()
$(yourElement).rules("add", {...})
发布于 2012-05-20 01:53:32
我认为你的代码比它需要的更复杂。您应该只需要在document ready上调用validate
(假设您的表单存在于document ready上):
$(document).ready(function() {
$(".val-req").addClass("required");
$("#form_id").validate({
errorElement: "span",
errorClass: "val-error",
validClass: "val-valid",
errorPlacement: function(error, element) {
$('#val-msg.' + $(element).attr('id')).html(error.html());
},
submitHandler: function () {
this.submit();
}
});
});
示例: http://jsfiddle.net/4vDGM/
您也可以只向所需的元素添加一类required
,而不是通过JavaScript添加它们。
您可以做的另一件事是在validate
的选项的rules对象中添加规则:
$(document).ready(function() {
$("#form_id").validate({
rules: {
myval: "required"
},
errorElement: "span",
errorClass: "val-error",
validClass: "val-valid",
errorPlacement: function(error, element) {
$('#val-msg.' + $(element).attr('id')).html(error.html());
},
submitHandler: function () {
this.submit();
}
});
});
发布于 2015-06-16 17:48:54
我试图修改已经设置了验证的表单上的规则,但我找到了我的$(.ready)文档(...)在设置主窗体验证之前,代码就已经在执行了,所以添加一个简短的setTimeout就解决了这个问题。
setTimeout(function() {
$(yourElement).rules("add", {...})
}, 100);
https://stackoverflow.com/questions/10651284
复制相似问题