Validador Fechas

Valida formato, fecha real, y rango validez entre dos fechas

by mhctoledo

HTML

<input type="text" id="fecha" value="" >
<button id="validar" value="validar">validar</button>
<p id="hoy">H:</p>
<p id="futuro">F:</p>
<p id="campo">C:</p>
<p id="resultado"></p>

JavaScript

$("#validar").on("click",function(){
    var fecha = $("#fecha").val();
    
    var RegExPattern = /^\d{1,2}\/\d{1,2}\/\d{2,4}$/;
    if ((fecha.match(RegExPattern)) && (fecha!='')){
        var fechaf = fecha.split("/");
        var day = fechaf[0];
        var month = fechaf[1];
        var year = fechaf[2];
        var date = new Date(year,month,'0');
        if(month > 0 && month < 13 && year > 0 && year < 32768 && day > 0 && day <= (new Date(year, month, 0)).getDate()){
   
            var fecha_hoy_dos_meses_mas = new Date();
            var fecha_campo = new Date(year,month,day);
            fecha_hoy_dos_meses_mas.setMonth(fecha_hoy_dos_meses_mas.getMonth() + 2);
            var fecha_hoy = new Date();
            
            fecha_hoy_dos_meses_mas = ""+fecha_hoy_dos_meses_mas.getFullYear()+""+("0" + (fecha_hoy_dos_meses_mas.getMonth() + 1)).slice(-2) +""+("0" +fecha_hoy_dos_meses_mas.getDate()).slice(-2)+"";
            
            fecha_campo = ""+fecha_campo.getFullYear()+""+("0" + (fecha_campo.getMonth() )).slice(-2) +""+("0" +fecha_campo.getDate()).slice(-2)+"";
            
            fecha_hoy = ""+fecha_hoy.getFullYear()+""+("0" + (fecha_hoy.getMonth() + 1)).slice(-2) +""+("0" +fecha_hoy.getDate()).slice(-2)+"";
            
            $("#hoy").html(fecha_hoy);
            $("#futuro").html(fecha_hoy_dos_meses_mas);
            $("#campo").html(fecha_campo);
            
            if(fecha_campo < fecha_hoy || fecha_campo > fecha_hoy_dos_meses_mas){
                return false;
            }else{
                return true;
            }
        }else{
            return false;
        }
    }else{
        return false;
    }   
});