/** * * JQuery addapter class so we can use built in JQuery validator. NOTE: this is * only skeleton, implementing only small part of possible validation, Usage: * * * $(function(){$.fn.stripesValidation('${metaData.formId}', ${metaData});}); * * * Dependancies: JQuery.1.3.1 JQuery.Form JQuery.Validate * * Licence: Same as JQuery, thus: Dual licensed under the MIT and GPL licenses. * http://docs.jquery.com/License */ (function($) { /** * Processess Stripes meta data and converting it so JQuery Validation * plugin is used for client side validation * * @param formId * id of a form to be processed * @param metaData * metadata that is produced by stripes tag */ $.fn.stripesValidation = function(formId, metaData) { var form = $('#' + formId); var idCount = 0; for ( var fieldName in metaData) { var field = form.find('[name="' + fieldName + '"]'); addValidation(field, metaData[fieldName]); // run validation: form.validate(); } function addValidation(field, obj) { for ( var prop in obj) { var val = obj[prop]; switch (prop) { case 'label': break; case 'required': if (val) { // add only if true field.addClass(prop); } break; case 'minlength': // should already be there case 'maxlength': // should already be there field.attr(prop, val); break; case 'minvalue': field.attr('min', val); break; case 'maxvalue': field.attr('max', val); break; case 'mask': setMask(field, val); break; case 'typeConverter': setConverter(field, val); break; // VU case 'ignoreCRLFInLength': if(val){ field.addClass(prop); } break; default: debug('missing this:' + prop + ':' + val); } } } /** * Adds regular expression validation * * @param field * field reference * @param mask * regular expression mask */ function setMask(field, mask) { idCount++; var methodRef = 'maskMethod' + idCount; field.addClass(methodRef); $.validator.addClassRules({ methodRef : { methodRef : true } }); $.validator.addMethod(methodRef, function(value) { return mask.test(value); }, 'El valor capturado no es v\u00E1lido.'); } /** * Add converter mappings * * @param field * field reference * @param converter * converter used by stripes for given field */ function setConverter(field, converter) { if (converter == 'EmailTypeConverter') { field.addClass('email'); } else if (converter == 'DateTypeConverter') { field.addClass('date'); if ($.fn.datepicker) { field.datepicker(); } } else if (converter == 'CreditCardTypeConverter') { field.addClass('creditcard'); } else if (converter == 'IntegerTypeConverter') { field.addClass('number'); } else if (converter == 'PercentageTypeConverter') { field.addClass('number'); // Begin - VU } else if (converter == 'RFCPersonaMoralTypeConverter') { field.addClass('rfcPersonaMoral'); } else if (converter == 'RFCPersonaFisicaTypeConverter') { field.addClass('rfcPersonaFisica'); } else if (converter == 'NombreTypeConverter') { field.addClass('nombre'); } else if (converter == 'NombrePersonaTypeConverter') { field.addClass('nombrePersona'); } else if (converter == 'UsuarioContrasenaTypeConverter') { field.addClass('usuarioContrasena'); } else if (converter == 'DescripcionDireccionTypeConverter') { field.addClass('descripcionDireccion'); } else if (converter == 'BigDecimal2DecimalsTypeConverter') { field.addClass('bigDecimal2Decimals'); } else if (converter == 'BigDecimal3DecimalsTypeConverter') { field.addClass('bigDecimal3Decimals'); } else if (converter == 'CURPTypeConverter') { field.addClass('curp'); } else if (converter == 'NumeroPermisoImportacionExportacionTypeConverter') { field.addClass('numeroPermisoImportacionExportacion'); } else if (converter == 'NumeroPermisoImportacionCNSNSTypeConverter') { field.addClass('numeroPermisoImportacionCNSNS'); } else if (converter == 'Cantidad15_4TypeConverter') { field.addClass('cantidad15_4'); } else if (converter == 'CodigoPostalNacionalTypeConverter') { field.addClass('codigoPostalNacional'); } else if (converter == 'CodigoPostalExtranjeroTypeConverter') { field.addClass('codigoPostalExtranjero'); } else if (converter == 'NumeroFacturaTypeConverter') { field.addClass('numeroFactura'); // End - VU } else { debug('missing converter mapping:' + converter); } } function debug(msg) { if (window.console && window.console.log) { window.console.log(msg); } } }; })(jQuery); // add the date picker control to fields with a class of datepicker //$(function() { // if (!$.datepicker) // return; // // $.datepicker.setDefaults({ // showOn : 'button', // /*buttonImage : contextPath + '/images/main/calendar-icon-20.png', // buttonImageOnly : true,*/ // buttonText: "", // showOptions: { direction: "up" }, // changeMonth : true, // changeYear : true, // showButtonPanel : true, // defaultDate : null, // dateFormat : 'm/d/yy', // }); // // $('.datepicker').datepicker(); //});