I tend to use a different approach to this. When I have objects (forms, usually) that need to have a lot of client-side behavior bound to them, I define JavaScript objects that represent those forms.
For example, a contact form might have a corresponding Contact object that gets initialized with the context of the inner-form elements (textboxes, buttons, etc.) During initialization you can then use jQuery (or your framework of choice) to add behaviors to these elements. In your case you'd bind a click event which would call a validation function in your Contact object.
This seems cleaner than creating a whole bunch of unrelated plugins to provide very specific behavior.
EDIT TO PROVIDE EXAMPLE
Here's a quick & simple sample of this in action: http://jsbin.com/elefi/edit
The code:
if(typeof(MyDomain) == "undefined") {
MyDomain = {};
MyDomain.MyApp = {};
}
MyDomain.MyApp.ContactForm = function() {
var $_submitButton;
var $_firstNameTextBox;
var _validateForm = function () {
if($_firstNameTextBox.val() === '') {
alert('Form Invalid');
}
else {
alert('Form Valid');
}
};
return {
initialize: function(submitButtonId, firstNameTextBoxId) {
// Add context
$_submitButton = $("#" + submitButtonId);
$_firstNameTextBox = $("#" + firstNameTextBoxId)
// Add behaviours
$_submitButton.click(_validateForm);
}
}
}();
// Emit this using your server-side code
$(function() {
MyDomain.MyApp.ContactForm.initialize('SubmitButton', 'FirstName');
});
Note that IE6 seems to dislike jsbin.com, so open it in FF