【发布时间】:2009-11-10 19:19:27
【问题描述】:
我有一个包含许多复选框的表单(太多复选框,无法使用它们自己的规则),我需要使用jQuery Validation Plugin 来确保至少选择其中一个。它们都有不同的名称,所以到目前为止我通过谷歌搜索找到的大多数解决方案都不适合我。
但是,我遇到了this 帖子,我对其进行了一些调整以制作此扩展方法:
// method for checking out checkboxes for the form validation
$.validator.methods.checkboxes_checked = function(value,element,param) {
return ($('#signup #checkboxes input[type=checkbox]:checked').length > 0);
}
... 返回 true 或 false 取决于是否选择了任何复选框。我不想逐字使用上述帖子中的方法,因为这需要为每个复选框制定单独的规则,而且我有很多规则(20+),这对我来说没有多大意义。
我唯一的问题是我不知道如何将它连接到我的验证调用中,因为我在页面上也没有一个“单一”元素来绑定它(例如,我的所有其他验证规则都是绑定到特定的单个元素,而我上面的扩展方法将 - 本质上 - 绑定到 20 多个元素)。这是我的验证调用现在的样子:
// validate the form
$('#signup').validate({
rules: {
'bedrooms': { required: true },
'maxrent': { required: true },
'term': { required: true },
'movedate': { required: true },
'firstname': { required: true, minlength: 2 },
'lastname': { required: true, minlength: 1, maxlength: 1 },
'email': { required: true, email: true },
'day_telephone': { required: true, digits: true, minlength: 10, maxlength: 10 }
},
errorPlacement: function(error, element) { error.css('display','none'); },
highlight: function(element, errorClass) {
$(element).fadeOut(function() { $(element).fadeIn(); });
$('label[for='+$(element).attr('name')+']').css('color','red');
},
unhighlight: function(element, errorClass) { $('label[for='+$(element).attr('name')+']').css('color','black'); },
onkeyup: false
});
基本上,我希望表单本身在提交之前检查(使用 jQuery 验证插件)我的扩展方法是否返回 true。这个怎么添加?
【问题讨论】:
标签: jquery validation