tengo 1 problema, quiero comparar dos fechas entre la fecha de nacimiento y hoy, la condición es que la fecha de nacimiento debe ser menor que la fecha de hoy, funcionó al principio, pero si elijo otra fecha del selector de fecha que es menor que hoy, sigue siendo pop alerta Y no está bien. ¿Alguien sabe por qué pasó esto?
function submitForm() { var dateborn = document.getElementById('dateborn').value; var today = document.getElementById('today').value; if(dateborn != '') { if(dateborn > today) { swal("Oops", "Date born must less than date today", "error"); return false; } } }Si yo fuera usted, puedo usar la marca de tiempo para comparar 2 fechas.
function submitForm() { var dateborn = document.getElementById('dateborn').value; var today = document.getElementById('today').value; const time1 = new Date(dateborn).getTime(); const time2 = new Date(today).getTime(); // or new Date().getTime(); if(dateborn != '') { if(time1 > time2) { swal("Oops", "Date born must less than date today", "error"); return false; } }Prueba esto
function submitForm() { var dateborn = document.getElementById('dateborn').value; var today = document.getElementById('today').value; if(dateborn != '') { if(Date(dateborn).getTime() > Date(today).getTime()) { swal("Oops", "Date born must less than date today", "error"); return false; } } }En cuanto a su pregunta por qué sucedió esto. Creo que su selector de fecha no da la fecha en formato ISO. si su valor tiene el formato AAAA-MM-DD (de mayor a menor), puede compararlo como una cadena. Puedes ver esto en este violín que hice: JSfiddle
¿Tu selector de fecha se ve así:
<input type="date" id="d2" onChange="change(this)"/>