我有一个使用验证插件的表单,但是我需要使用略有不同的条件来验证表单的单独部分-大多数字段将错误放置在下一个表格单元格中,但是对于一个字段,我需要将错误放置在其他地方.
这是主要表单字段的验证功能:
jQuery("#form2").validate({
rules: {
street: {
required: true,minlength: 5
},city: {
required: true,minlength: 3
},state: {
required: true
},zip: {
required: true,minlength: 5
}
},messages: {
street: {
required: "Please enter your address",minlength: "Address is too short"
},city: {
required: "Please enter your town/city",minlength: "Town/City is too short"
},state: {
required: "Please enter your county"
},zip: {
required: "Please enter your postcode",minlength: "Postcode is too short"
}
},errorPlacement: function(error,element) {
error.appendTo(element.parent("td").next("td"));
}
}); // end validate
基本上,我还想单独验证此字段集,因此可以将不同的值用于errorPlacement:
jQuery("#elecfields").validate({
rules: {
sup1: {
minlength: 2
}
},messages: {
sup1: {
minlength: "must be 2 digits"
}
},element)
{
// different error placement is needed here
}
}); // end elecfields validate
elecfields是form2内的一个字段集-但这似乎不起作用.
看来errorPlacement必须适用于表单中的所有字段,但是我只有一个需要错误的字段放置在其他地方.关于如何实现的任何想法?很感谢任何形式的帮助.
最佳答案
你是对的. errorPlacement处理程序的确适用于整个表单,但是在某些情况下,您也可以使用其中的逻辑来不同地处理错误.例如,您可以查看元素属性direclty并查看有问题的项目,或者可以基于公共父项(在您的情况下为字段集)对其进行过滤.例:
$("#form").validate({
/* */
errorPlacement: function(error,element)
{
if( element.closest("#subFieldSet").length ) {
/* special handling */
} else {
/* generic handling */
error.insertAfter(element);
}
}
});