const CODIGO_MUNICIPIO_ALICANTE = '14'; const CODIGO_EMPADRONADO_SI = '1'; const FECHA_REFERENCIA_MENORES_18 = '17/09/2024'; const FECHA_REFERENCIA_MAYORES_65 = '01/06/2025'; const FECHA_REFERENCIA_EDAD_MATRICULARSE = '31/12/2025'; const EDAD_MINIMA_MATRICULARSE = '16'; $(document).ready(function () { // Al rellenar el NIF, comprobar si existía una inscripción previa PRESENCIAL para esa persona $('#nif, #tipo_doc').change(function () { if ($('#nif').val()) { compruebaExisteInscripcionPresencial($('#tipo_doc').val(), $('#nif').val()); } }); $('form').submit(function () { let lb_retorno = true; if ($('#nif').data('duplicado') == '1') { muestraErrorInscripcionDuplicada(); lb_retorno = false; } lb_retorno = lb_retorno && compruebaRenunciaBonificacionEdad(); return lb_retorno; }); // Al cambiar el barrio, cambiar el distrito $('#barrio').change(function () { $('#distrito').val( $(this).find(":selected").data('distrito') ); }); // Al cambiar la población, activar y desactivar campos dependientes // - Calle con buscador // Calle en texto // - Barrio // - Distrito // - Empadronado // - Bonificaciones $('#poblacion').change(function () { if ($(this).val() == CODIGO_MUNICIPIO_ALICANTE) { $('#calle').closest('.form-group').removeClass('d-none'); $('#domicilio').closest('.form-group').addClass('d-none'); $('#barrio').prop('disabled', false); $('#distrito').prop('disabled', false); $('input[name=empadronado]').prop('disabled', false); } else { $('#calle').closest('.form-group').addClass('d-none'); $('#domicilio').closest('.form-group').removeClass('d-none'); $('#barrio').val('') .prop('disabled', true); $('#distrito').val('') .prop('disabled', true); $('input[name=empadronado]').prop('checked', false) .prop('disabled', true); $('input[name=empadronado][id=empadronado_no').prop('checked', true); $('input[name=bonificado]').prop('checked', false); $('#campos_bonificaciones').hide(); $('#mensaje_no_bonificaciones').show(); } }); // Muestra/oculta la disponibilidad de las bonificaciones según el empadronamiento $('input[name=empadronado]').change(function () { if ($(this).val() == 1) { $('#campos_bonificaciones').show(); $('#mensaje_no_bonificaciones').hide(); } else { $('#campos_bonificaciones').hide(); $('input[name=bonificado]').prop('checked', false); $('input[name=bonificado][id=bonificado_0]').prop('checked', true); $('#mensaje_no_bonificaciones').show(); } }); // Al cambiar la fecha de nacimiento, comprueba la disponibilidad de las bonificaciones $('#fnacim').change(function () { let lb_menor_18 = edad($(this).val(), FECHA_REFERENCIA_MENORES_18) < 18; let lb_mayor_65 = edad($(this).val(), FECHA_REFERENCIA_MAYORES_65) >= 65; $('#bonificado_1').prop('disabled', lb_menor_18 == false) .prop('checked', lb_menor_18 == true && $('#bonificado_1').prop('checked') == true); $('#bonificado_2').prop('disabled', lb_mayor_65 == false) .prop('checked', lb_mayor_65 == true && $('#bonificado_2').prop('checked') == true); }); // Botón grabar cambios, cuando se ha llegado al paso final $('button#submit_finalizar').click(function(e) { $('input#destino').val('paso3.php'); }); /* Validaciones extra del formulario */ jQuery.validator.addMethod("inscripcion_duplicada_AYTO", function (value, element) { return $(element).data('duplicado') != '1'; }, 'Ya existe una inscripción previa con estos datos'); /* Validaciones extra del formulario */ jQuery.validator.addMethod("edad_mayor_16", function (value, element) { return edad($(element).val(), FECHA_REFERENCIA_EDAD_MATRICULARSE) >= EDAD_MINIMA_MATRICULARSE; }, 'Para poder matricularse debe cumplir 16 años en 2025'); jQuery.validator.setDefaults({ ignore: "", rules: { nif: { required: true, nif_nie_AYTO: { depends: element => $('#tipo_doc').val() == 'nif_nie' }, inscripcion_duplicada_AYTO: true }, nombre: { required: true }, apellido_1: { required: true }, sexo: { required: true }, fnacim: { required: true, dateITA: true, edad_mayor_16: true }, nacionalidad: { required: true }, telefono: { require_from_group: [1, ".campos_telefono"], telefono_AYTO: true }, tlf_movil: { require_from_group: [1, ".campos_telefono"], telefono_movil_AYTO: true }, email: { required: true, email: true }, poblacion: { required: true }, cod_calle: { digits: true, required: { depends: element => $('#poblacion').val() == CODIGO_MUNICIPIO_ALICANTE } }, domicilio: { required: { depends: element => $('#poblacion').val() != CODIGO_MUNICIPIO_ALICANTE } }, numero: { digits: true }, piso: { digits: true }, cod_postal: { required: true, digits: true, exactlength_AYTO: 5 }, barrio: { required: { depends: element => $('#poblacion').val() == CODIGO_MUNICIPIO_ALICANTE } }, estudios: { required: true }, ocupacion: { required: true }, empadronado: { required: true }, bonificado: { required: { depends: element => $('#empadronado_si').is(":checked") } }, }, messages: { } }); $('#form_vacantes_p1').validate(); /* Proveer comportamiento fancybox a los elementos de ayuda */ $('.ayuda').fancybox(); /* Mostrar tooltips si los hay */ $('[data-toggle="tooltip"]').tooltip(); }); /** * FUNCIONES AUXILIARES * */ /* Función auxiliar que hace una llamada AJAX para comprobar si ya existía una inscripción presencial */ function compruebaExisteInscripcionPresencial(as_tipo_doc, as_nif) { $.getJSON("ws-existe-inscripcion-presencial.php", { tipo_doc: as_tipo_doc, nif: as_nif }) .done(function (lo_datos) { if (lo_datos.existe_inscripcion_presencial == true) { $('#nif').data('duplicado', '1').valid(); muestraErrorInscripcionDuplicada(); } else { $('#nif').data('duplicado', '').valid(); } }) .fail(function () { $('#nif').data('duplicado', '').valid(); }); } /* Función auxiliar para mostrar error por inscripción duplicada */ function muestraErrorInscripcionDuplicada() { alert('
Usted ya realizó una inscripción de forma presencial. Debe dirigirse al centro donde se inscribió, para apuntarse a cursos con plazas vacantes.
'); } /* Función auxiliar que pide confirmación para renunciar a bonificación por edad */ function compruebaRenunciaBonificacionEdad() { let ls_fnacim = $('#fnacim').val(); let lb_empadronado = $('#empadronado_si').is(':checked'); let lb_menor_18 = edad(ls_fnacim, FECHA_REFERENCIA_MENORES_18) < 18; let lb_mayor_65 = edad(ls_fnacim, FECHA_REFERENCIA_MAYORES_65) >= 65; let lb_disponible_bonificacion_edad = lb_empadronado && (lb_menor_18 || lb_mayor_65); let lb_bonificado_nada = $('#bonificado_0').is(':checked'); let ls_mensaje = `IMPORTANTE: Puede optar a una bonificación por su edad, pero no la ha seleccionado en el formulario. ¿Desea continuar con la inscripción RENUNCIANDO a esta bonificación?.`; return !lb_disponible_bonificacion_edad || !lb_bonificado_nada || confirm(ls_mensaje); } /* Función auxiliar para calcular la edad en base a unas fechas de referencia */ function edad(ls_fnacimiento, ls_freferencia) { li_edad = 0; la_partes_fnac = ls_fnacimiento.split("/"); la_partes_fref = ls_freferencia.split("/"); li_dia_nac = parseInt(la_partes_fnac[0], 10); li_mes_nac = parseInt(la_partes_fnac[1], 10); li_anyo_nac = parseInt(la_partes_fnac[2], 10); li_dia_ref = parseInt(la_partes_fref[0], 10); li_mes_ref = parseInt(la_partes_fref[1], 10); li_anyo_ref = parseInt(la_partes_fref[2], 10); li_edad = li_anyo_ref - li_anyo_nac - 1; if((li_mes_ref > li_mes_nac) || (li_mes_ref == li_mes_nac && li_dia_ref >= li_dia_nac)) { li_edad++; } return li_edad; }