const CUANTOS_DOCUMENTOS = 4; const TAM_MAX_DOCUMENTO = 10485760; // Bytes $(document).ready(function() { $('#masDocumentos').click(function(event) { event.preventDefault(); let lo_contenedor = $('#contenedor-documentos'); anyadeDocumento(lo_contenedor); }); $(document).on('click', '.quitar-documento', function(event) { event.preventDefault(); let lo_contenedor = $('#contenedor-documentos'); let li_documento = $(this).data('documento'); quitaDocumento(lo_contenedor, li_documento); reordenaDocumentos(lo_contenedor); }); $('#matricula').change(function(event) { $('#matricula').val(analizaMatricula($(this).val())); }); jQuery.validator.addMethod("comprobarOrdenFechas", function (value, element) { const toDate = (dateStr) => { const [day, month, year] = dateStr.split("/") return new Date(year, month - 1, day) } lo_fdesde = toDate($('#fdesde').val()); lo_fhasta = toDate($('#fhasta').val()); return (lo_fdesde && lo_fhasta) ? (lo_fdesde.getTime() <= lo_fhasta.getTime()) : true; }, 'La fecha desde no puede ser posterior a la fecha hasta'); $('#form_acceso').validate({ ignore: "", rules: { nombre: { required: true, maxlength: 60 }, nif: { required: true, nif_nie_cif_AYTO: true }, telefono: { required: true, telefono_AYTO: true }, email: { email: true, maxlength: 100 }, matricula: { required: true, maxlength: 10 }, marca: { required: true, maxlength: 25 }, modelo: { required: true, maxlength: 40 }, fdesde: { required: true, dateITA: true, comprobarOrdenFechas: true }, fhasta: { required: true, dateITA: true, comprobarOrdenFechas: true }, motivo: { required: true, maxlength: 150 }, documento1: { accept: 'image/jpeg,application/pdf', filesize_ayto: TAM_MAX_DOCUMENTO/1024/1024 }, documento2: { accept: 'image/jpeg,application/pdf', filesize_ayto: TAM_MAX_DOCUMENTO/1024/1024 }, documento3: { accept: 'image/jpeg,application/pdf', filesize_ayto: TAM_MAX_DOCUMENTO/1024/1024 }, documento4: { accept: 'image/jpeg,application/pdf', filesize_ayto: TAM_MAX_DOCUMENTO/1024/1024 } }, messages: { } }); }); function analizaMatricula(as_matricula) { // Forzar mayúsculas y TRIM let li_matricula_temp = as_matricula.toUpperCase().trim(); // Expresiones regulares que detectan matrículas del tipo "AA-999999", "AA-9999-BB" y "9999-AAAA" // Se ignoran los caracteres no alfanuméricos intermedios let ls_regexp_matricula_antigua1 = /^([A-Z]{1,2})[^A-Z\d]*(\d{1,6})$/; let ls_regexp_matricula_antigua2 = /^([A-Z]{1,2})[^A-Z\d]*(\d{4})[^A-Z\d]*([A-Z]{1,2})$/; let ls_regexp_matricula_nueva = /^(\d{4})[^A-Z\d]*([A-Z]{3})$/; // Se busca coincidencia con las expresiones regulares let la_trozos_matricula_nueva = li_matricula_temp.match(ls_regexp_matricula_nueva); let la_trozos_matricula_antigua1 = li_matricula_temp.match(ls_regexp_matricula_antigua1); let la_trozos_matricula_antigua2 = li_matricula_temp.match(ls_regexp_matricula_antigua2); if(la_trozos_matricula_nueva) { li_matricula_temp = la_trozos_matricula_nueva[1]+"-"+la_trozos_matricula_nueva[2]; } else if(la_trozos_matricula_antigua2) { li_matricula_temp = la_trozos_matricula_antigua2[1]+"-"+la_trozos_matricula_antigua2[2]+"-"+la_trozos_matricula_antigua2[3]; } else if(la_trozos_matricula_antigua1) { li_matricula_temp = la_trozos_matricula_antigua1[1]+"-"+la_trozos_matricula_antigua1[2]; } return li_matricula_temp; } function anyadeDocumento(ao_contenedor) { let ai_cuantosDocumentos = ao_contenedor.find('input:file').length; if(ai_cuantosDocumentos >= CUANTOS_DOCUMENTOS ) { alert(`No se puede adjuntar más de 4 documentos`); return; } else { ai_cuantosDocumentos++; } ao_contenedor.append(`

Formato jpg / pdf

`); } function quitaDocumento(ao_contenedor, ai_numDocunento) { let lo_grupo_documento = $(ao_contenedor).find(`#grupo-documento${ai_numDocunento}`); lo_grupo_documento.remove(); } function reordenaDocumentos(ao_contenedor) { let la_grupos = $(ao_contenedor).find('.grupo-documento'); let li_numDocumento=1; la_grupos.each(function(index) { if(li_numDocumento > 1) { let lo_quitar = $(this).find('a').first(); let lo_label = $(this).find('label:not(.error)').first(); let lo_label_error = $(this).find('label.error').first(); let lo_input = $(this).find('input').first(); $(this).prop('id', `grupo-documento${li_numDocumento}`); lo_quitar.attr('data-documento', li_numDocumento); lo_label.attr('for', `documento${li_numDocumento}`) .text(`Documento nº${li_numDocumento}`); lo_label_error.prop('id', `documento${li_numDocumento}-error`) .attr('for', `documento${li_numDocumento}`) lo_input.attr('name', `documento${li_numDocumento}`) .attr('id', `documento${li_numDocumento}`); } li_numDocumento++; }); }