templates/guest/index.html.twig line 1
{% extends 'base.html.twig' %}
{% block title %}Registro PBA - Fundación MAPFRE{% endblock %}
{% block javascripts %}
<script src="https://www.google.com/recaptcha/api.js?render={{ site_key }}"></script>
{% endblock %}
{% block body %}
<div class="publicHeader">
<h1>Regístrate</h1>
<h3>Para poder solicitar las ayudas de Fundación MAPFRE debes registrarte a través del siguiente formulario:</h3>
{# <p><div class="formError">{{ form_errors(guest_form.document_number) }}</div></p> #}
</div>
<div class="formRegistro">
{{ form_start(guest_form) }}
<div class="row">
<div class="col-md-6">
{{ form_row(guest_form.name, {'attr': {'tabindex': '1'}}) }}
{{ form_row(guest_form.document_type, {'attr': {'tabindex': '3'}}) }}
</div>
<div class="col-md-6">
{{ form_row(guest_form.surname, {'attr': {'tabindex': '2'}}) }}
{{ form_label(guest_form.document_number) }}
{{ form_widget(guest_form.document_number, {'attr': {'tabindex': '4'}}) }}
<div id="documentError" class="formError alert alert-danger mt-1" style="display: none;">{{ form_errors(guest_form.document_number) }}</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
{{ form_row(guest_form.email) }}
<label for="guest_form_email_confirm">Repetir correo electrónico*</label>
<input type="text" id="guest_form_email_confirm" required="required" maxlength="255">
<div id="emailError" class="alert alert-danger mt-3" style="display: none;">Los correos electrónicos deben coincidir.</div>
<p class="m-3 ms-0">* Campos obligatorios</p>
<p>Fundación MAPFRE como responsable del tratamiento utilizará sus datos para la gestión y envío de nuestra revista digital, así como el envío de proyectos sociales que apoyamos, exposiciones y eventos que organizamos, o información de Fundación MAPFRE, envíos que podrán realizarse por medios electrónicos, para lo que podríamos necesitar realizar comunicaciones a terceros por obligación legal y podrán realizarse transferencias de datos a terceros países en los términos señalados en la Política de Privacidad. </p><br>
<p>La persona interesada garantiza la exactitud y veracidad de los datos personales facilitados. En caso de que los datos se refieran a terceras personas distintas del interesado/a, garantiza haber informado y recabado el consentimiento con carácter previo a la inclusión de los datos en el presente formulario. </p><br>
<p>Podrá ejercitar, en cualquier momento, sus derechos de acceso, rectificación, supresión, limitación, oposición o portabilidad tal y como se indica en el <a href={{ href_p }}> tratamiento de datos personales</a>.</p>
<span class="politica">
<input type="checkbox" name="aceptar" id="aceptar" value="aceptar" required>
<label for="aceptar">Acepto el <a href={{ href_checkbox }}>Tratamiento de datos personales</a>.</label>
</span>
{{ form_row(guest_form.Enviar) }}
</div>
</div>
<input type="hidden" id="{{ guest_form._token.vars.id }}" name="{{ guest_form._token.vars.full_name }}" value="{{ guest_form._token.vars.value }}">
<div class="row">
<div class="col-md-12">
{{ form_end(guest_form, {'render_rest': false}) }}
</div>
</div>
</div>
{% endblock %}
{% block extra_js %}
const email = document.querySelector('#guest_form_email');
const emailConfirm = document.querySelector('#guest_form_email_confirm');
const emailError = document.querySelector('#emailError');
const submitButton = document.querySelector('#guest_form_Enviar');
const documentNumber = document.querySelector('#guest_form_document_number');
var documentError = document.getElementById('documentError');
const form = document.querySelector('form[name="guest_form"]');
form.addEventListener('input', lockUnlockSubmitButton);
emailConfirm.addEventListener('paste', function(e) {
e.preventDefault();
return false;
});
let emailValidationTimeoutId = null;
function checkEmails() {
if (emailValidationTimeoutId !== null) {
clearTimeout(emailValidationTimeoutId); // Limpia el temporizador anterior
}
emailValidationTimeoutId = setTimeout(function() {
if (emailConfirm.value !== '') { // Solo valida si hay algo en el campo de confirmación
if (email.value !== emailConfirm.value) {
emailError.style.display = 'block';
submitButton.disabled = true;
} else {
emailError.style.display = 'none';
submitButton.disabled = false;
}
}
emailValidationTimeoutId = null; // Restablece el temporizador
}, 1000);
}
email.addEventListener('input', checkEmails);
emailConfirm.addEventListener('input', checkEmails);
document.getElementById('guest_form_document_type').addEventListener('focus', function() {
this.size = this.options.length;
});
document.getElementById('guest_form_document_type').addEventListener('blur', function() {
this.size = 0;
});
document.getElementById('guest_form_document_type').addEventListener('change', function() {
documentError.style.display = 'none';
});
function lockUnlockSubmitButton() {
var name = document.getElementById('guest_form_name').value;
var surname = document.getElementById('guest_form_surname').value;
var email = document.getElementById('guest_form_email').value;
var emailConfirm = document.getElementById('guest_form_email_confirm').value;
if (documentError.style.display === 'none' && emailError.style.display === 'none' && name !== '' && surname !== '' && email !== '' && emailConfirm !== '') {
submitButton.disabled = false;
} else {
submitButton.disabled = true;
}
}
function validateDocumentNumber() {
var value = documentNumber.value.trim();
if (value.length === 9 && !isValidDniNie(value)) { // Solo valida si hay 9 caracteres
documentError.style.display = 'block';
} else {
documentError.style.display = 'none';
}
}
function validateDocumentNumberOnLoad() {
var value = documentNumber.value.trim();
if (documentError.innerHTML !== "" && value.length > 0 || !isValidDniNie(value)) { // Valida si hay algún carácter
documentError.style.display = 'block';
submitButton.disabled = true;
} else {
documentError.style.display = 'none';
submitButton.disabled = false;
}
}
documentNumber.addEventListener('input', validateDocumentNumber);
// Validación inmediata al cargar la página si hay contenido en el campo
if (documentNumber.value.trim() !== "") {
validateDocumentNumberOnLoad();
}
function isValidDniNie(value) {
var dniPattern = /^\d{8}[A-Za-z]$/;
if (dniPattern.test(value)) {
var letters = "TRWAGMYFPDXBNJZSQVHLCKET";
var number = parseInt(value.substring(0, 8), 10);
var letter = value.charAt(8).toUpperCase();
return letter === letters.charAt(number % 23);
}
var niePattern = /^[XYZ]\d{7}[A-Za-z]$/;
if (niePattern.test(value)) {
var number = value
.replace('X', '0')
.replace('Y', '1')
.replace('Z', '2')
.substring(0, 8);
var letter = value.charAt(8).toUpperCase();
return letter === "TRWAGMYFPDXBNJZSQVHLCKET".charAt(number % 23);
}
return false;
}
document.addEventListener('DOMContentLoaded', function() {
grecaptcha.ready(function() {
grecaptcha.execute('{{ site_key }}', {action: 'formulario'}).then(function(token) {
// Añade un campo oculto con el token al formulario
var form = document.querySelector('form[name="guest_form"]');
if (form) {
var input = document.createElement('input');
input.type = 'hidden';
input.name = 'g-recaptcha-response';
input.value = token;
form.appendChild(input);
} else {
console.error('Formulario no encontrado');
}
});
});
});
{% endblock %}