Solo muestra la fecha de un input date en chrome y no en firefox JS

Iniciado por SrTrp, 17 Agosto 2021, 04:49 AM

0 Miembros y 1 Visitante están viendo este tema.

SrTrp

Hola que tal estoy calculando la fecha con un input type date, pero este solo me da la fecha en chrome en firefox solo aparece NaN-NaN-NaN, y en chrome si me da la fecha correcta.
este es mi input:
Código (html4strict) [Seleccionar]

<input type="date" id="fecha_1" min="<?php echo $fecha_hoy;  ?>" max="2023-01-01" />

Y este es mi JS
Código (javascript) [Seleccionar]

const dias = [
  'domingo',
  'lunes',
  'martes',
  'miércoles',
  'jueves',
  'viernes',
  'sábado',
  'domingo',
];
const meses = [
  'enero',
  'febrero',
  'marzo',
  'abril',
  'mayo',
  'junio',
  'julio',
  'agosto',
  'septiembre',
  'octubre',
  'noviembre',
  'diciembre',
];
$("#fecha_1").on("input", function(){
get_date();
});

function get_date(){
  limpiar();
  var string_fecha = $("#fecha_1").val().substring(5,7)+"-"+$("#fecha_1").val().substring(8,10)+"-"+$("#fecha_1").val().substring(0,4);
var dia = new Date(string_fecha).getDate();
  var dian = new Date(string_fecha).getDay();
var mes = new Date(string_fecha).getMonth()+1;
var año = new Date(string_fecha).getFullYear();
document.getElementById("txt_h1").innerText = "Has selecionado el dia: " +dias[dian]+" "+dia+" de "+meses[mes-1]+" del "+año;
  var fecha_envio = "";
  var fecha_real="";
  if(mes<10 && dia >=10){
   fecha_envio = año+"-0"+mes+"-"+dia+"T09:00:00-06:00";
   fecha_real = año+"-0"+mes+"-"+dia;
  }else if(dia<10 && mes>=10){
   fecha_envio = año+"-"+mes+"-0"+dia+"T09:00:00-06:00"; 
   fecha_real = año+"-"+mes+"-0"+dia;
  }else if(mes<10 && dia<10){
   fecha_envio = año+"-0"+mes+"-0"+dia+"T09:00:00-06:00"; 
   fecha_real = año+"-0"+mes+"-0"+dia;
  }else{
    fecha_envio = año+"-"+mes+"-"+dia+"T09:00:00-06:00"; 
    fecha_real = año+"-"+mes+"-"+dia;
  }
console.log(fecha_envio+"");
    var formdat = new FormData();
    formdat.append('fecha', fecha_envio);     
    formdat.append('tipo', "0");     
    $.ajax({     
        data: formdat,
        url: '../googlecalendar/gestorc.php',
        type: 'POST',
        contentType: false,
        processData: false,
        success: function(data){
        response = JSON.parse(data);
          document.getElementById("tb_manager").style.visibility = "visible";
           document.getElementById("tb_manager").style.display = "";       
        }
    });   
}

SrTrp

Ya lo resolví por una extraña razón tal como asigno la fecha en chrome si me lo acepta pero en firefox no, la solución que encontré fue establecer la fecha así  new Date(2005,05,25); osea establecer los valores como enteros y por separado.

3n31ch

A modo de mas información, existen ciertas normas especificas de EMCAScript y otras organizaciones sobre lo que debe o no entender un navegador web. Muchas veces estas aplicaciones quedan abiertas a nuevas incorporaciones, osea: Debe entender esto, pero aparte puede entender cualquier otra cosa que considere implementar cada interprete (browrser). Es por esto que hay veces que se presentan estas diferencias (en su mayoría con css).

Por lo regular yo desarrollo usando Firefox como navegador de prueba, y luego me voy a otros, esto es porque hasta ahora he encontrado que firefox es mas "estándar". Chrome suele ser mas flexible, así que si me funciona en firefox se que (en su mayoría) me funcionará en el resto de navegadores actuales. (Omitiendo claro, internet explorer)

PD: A modo personal te recomiendo cambiar el <?php echo $fecha_hoy; ?> por <?= $fecha_hoy ?>.

PD2: Quizás otra recomendación sea usar let/const en vez de var y dejar de usar jquery (JQuery es el demonio  :D).

PD3: Espero no ser un pesado dando recomendaciones no pedidas.  :-X

Saludos!