Cambiar el valor de un campo fecha con JS

Publicado por Quanticbyte en 5 marzo, 2019
Categorias : Dosis Diaria

Como modificar un campo de formulario tipo ‘Date’ con JS, poniendo una fecha inicial o borrar una de introducida.


Los campos fecha son los típicos campos de seleccionar una fecha

Esta vista es con Firefox, con el Chrome es algo mas cutre:

¡Vamos al lio!

Lo que queremos es según un ‘checkbox’ establecer una fecha determinada.

Vamos a crear una página simple con el campo y el ‘checkbox’ así como con jQuery para empezar a probar.

En mi caso tengo la fecha a utilizar en un input, que también lo crearemos.

También añadimos un poquito de CSS para separa un poco los campos.

Ahora vamos a insertar el JS que verifica si se cambia el estado del checkbox

Lo que queremos es que si se selecciona el checkBox pongamos en el campo la fecha del ‘input text’, y si lo desmarcamos que nos la borre.

Ahora al clicar tenemos que coger el valor del input ‘fecha_inicio_proyecto

Primero os pongo el código que soluciona esto y lo comentamos.

Lo primero que hacemos es coger la fecha que tenemos en el input con id ‘fecha_inicio_proyecto’ y lo convertimos a un objeto Date() que guardamos en variable ‘d’.

Si miramos el valor de d.getTimezoneOffset() nos da : -60

Si miramos los minutos d.getMinutes() nos da : 50

ponemos en la fecha ‘d’ los minutos seteados respecto a nuestra zona horaria.

( 50 – ( -60 ) ) -> (50 + 60) son 50 minutos + 1 hora

Por lo tanto si miramos ahora el objeto ‘d’ tenemos:

En nuestro caso nos incrementa la hora de 00 a 01, pero como solo nos interesa la fecha no nos afecta.

Una vez tenemos la fecha que queremos seteada a nuestra zona horaria la pasamos a un valor JSON que se pasa a cadena, esta cadena la cortamos del valor 0 al 10

Y para acabar mandamos este valor al campo input ‘date’:

Para limpiar el campo y ponerlo a dd/mm/aaa, solo le tenemos que pasar una cadena vacía.

Espero se haya entendido y pueda ayudar!, os dejo el código completo:

Sé el primero en comentar


Deja un comentario






Acepto la política de privacidad