In a project, I have a lot of HTML forms without validation and I want to add a front end validation, in a quick way. I start looking for a library and I met Parsley.js. It's a good library, but if I decided to use it I would have to modify all the forms in my application. So there is where this code is born. It's for automatically binding a set of rules you define to a form.//Only basic types and validators.$.fn.parsley.mapping = {//Types'alphanum': {'parsley-type':    'alphanum'},'email':    {'parsley-type':    'email'},'url':  {'parsley-type':    'url'},'number':   {'parsley-type':    'number'},'digits':   {'parsley-type':    'digits'},'dateIso':  {'parsley-type':    'dateIso'},'phone':    {'parsley-type':    'phone'},//Validators'required': {'parsley-required':    'true'},    'notblank': {'parsley-notblank':    'true'},'minlength':    {'parsley-minlength': '?'},'maxlength':    {'parsley-maxlength': '?'},'min':  {'parsley-min': '?'},   'max':  {'parsley-max': '?'}}//Only inputs and textareas$.fn.parsley.fields = 'input:visible, textarea:visible';!function ($) {$.fn.generalValidation = function( validationRules ) {var name, validations, validationName, validationValue, att, key, value, form = $( this ), addValidations = function( validationRules ){if(validationRules === undefined){console.log('Error!!! You need to add the validation rules parameter');validationRules = {};}$( form ).find( $.fn.parsley.fields ).each(function(){name = $( this ).attr('name');validations = validationRules[name];if(validations == undefined) return true;for(validation in validations){validationName = validations[validation];validationValue = '';if(validationName.indexOf(':') !== -1){validationValue = validationName.substr(validationName.indexOf(':')+1, validationName.length);validationName = validationName.substr(0, validationName.indexOf(':'));}att = $.fn.parsley.mapping[validationName];if(att !== undefined){$.map(att, function (v, k) { key = k; value = v; });value = (value === '?') ? validationValue : value;$(this).attr(key, value);}}});return true;}, callParsley = function( form ) {form.parsley();};if(addValidations( validationRules )){callParsley( form );}}} ( window.jQuery );Here is a JSFiddle.This is my first plugin in jQuery.  Would you improve something in the code? Do you find this useful?
jQuery wrapper of Parsley.js
javascript;jquery;validation
From a once over:The following is not DRY at all, you have to find a way to not do this://Types'alphanum': {        'parsley-type': 'alphanum'    },'email': {        'parsley-type': 'email'    },'url': {        'parsley-type': 'url'    },'number': {        'parsley-type': 'number'    },'digits': {        'parsley-type': 'digits'    },'dateIso': {        'parsley-type': 'dateIso'    },'phone': {        'parsley-type': 'phone'    },I am pretty sure you can throw all that way by changing to the below statement:att = $.fn.parsley.mapping[validationName] || {  'parsley-type': validationName  };Also, $.fn.parsley.mapping could use some aligning to look betterYou are calling $.map without capturing the array it returns, perhaps you meant to use forEach ? Also, it seems that your code will not work correctly if there is more than 1 property in parsley.mapping.You keep assign to the same key and value.Your var statement is too messy:var name, validations, validationName, validationValue, att, key, value, form = $(this),    addValidations = function (validationRules) {Comparisons with undefined should be either with === or by doing a falsey check so use either if(validations === undefined) or if(!validations)There is no var validation for for(validation in validations){There are plenty of comma and semicolon problems, you should use jshint to find & solve themAll in all, I like the value of your wrapper, but I think it needs some more polishing.