¿Cómo puedo asignar la fecha actual a un campo y añadir una validación personalizada?
Puede ocurrir que en algún formulario necesitemos configurar un campo de tipo fecha para que muestre por defecto la fecha actual y además añadir una validación para que, por ejemplo, en ese campo solo pueda ingresarse una fecha menor o igual a la fecha actual. A continuación explicaremos los pasos para realizar estas configuraciones.
Paso 1: Añadimos un elemento "input" a nuestro formulario y lo definimos como tipo "fecha".
Paso 2: Obtenemos la fecha actual y se la asignamos a nuestro campo
Esta configuración la haremos en el OnLoad , lo que haremos será obtener la fecha actual y luego asignarla a nuestro campo usando este código:
// Asignar la fecha actual al campo fecha
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1;
var yyyy = today.getFullYear();
if (wf.obtenerValor("campo-fecha") === "") {
wf.modificarValor("campo-fecha", dd + "/" + mm + "/" + yyyy);
}
Paso 3: Personalizar la validación del campo fecha
Si además de asignar la fecha actual queremos añadir una validación personalizada, entonces debemos añadir una condición en la sección "Validaciones" de nuestro campo fecha. En este caso validaremos que ese campo contenga una fecha menor o igual a la fecha actual, así que obtendremos el valor ingresado en el campo fecha y lo compararemos con la fecha actual, si es mayor entonces mostraremos un mensaje que indica que la fecha no es correcta.
// Validación personalizada para el campo fecha
var selectedDate = wf.obtenerValor("campo-fecha");
var todayTimestamp = moment(new Date()).endOf('day').valueOf();
var selectedDateTimestamp = moment(selectedDate, webforms.i18n.DATE_FORMAT).valueOf();
if (selectedDateTimestamp > todayTimestamp) {
wf.anadirError(this, 'La fecha debe ser anterior o igual a hoy.');
}
Descarga ejemplo
Tienes disponible el código json del ejemplo para su descarga y que puedas probarlo y adaptarlo a tus necesidades.
Ver: campoFecha.json