when element name is not fixed then can we use wild card there for specifying name.
I assume the best way to achieve this goal is to consider:
So, a possible solution for your problem can be:
// global variable to save the validator object
var validator;
// a new rule to test if the selected checkboxes are more than the max or less than one
$.validator.addMethod('checkboxMax', function (value, elem, param) {
var cacheCheckedElements = $('[name^=test]:checked');
if (cacheCheckedElements.length < 1 || cacheCheckedElements.length > param.max) {
return false;
} else {
validator.resetForm();
return true;
}
});
$(function () {
// on ready: create the two json object: rules and messages
var myRules = {};
var myMessages = {};
$('[name^=test]').each(function (index, element) {
myRules[element.name] = {
checkboxMax: {
max: 2
}
};
myMessages[element.name] = {
checkboxMax: function(params, element) {
return 'Check no more than ' + params.max + ' boxes ';
}
};
});
// use the previous fields (myRules and myMessages) as arguments
validator = $('#myform').validate({
rules: myRules,
messages: myMessages,
submitHandler: function (form) { // for demo
alert('valid form submitted'); // for demo
return false; // for demo
}
});
});