¿Cómo limitar el resultado de la suma de dos fechas dependiendo de un número establecido, utilizando JavaScript? – javascript html fecha

Pregunta:


Lo que quiero lograr es hacer que el resultado de la suma se compare con otro número ya establecido, y que si el resultado es mayor que el número establecido te mande una alerta y número siga siendo 0, y cuando el resultado sea menor te mande otra vez una alerta y el número se vuelva a convertir en 0

me imagino que seía algo así…

if(total>numero){
alert("Te estas pasando de dias");
total=0;
}else if(total<numero){
alert("No estas ocupando todos los días");
total=0;
}else if(total==numero){
alert("Ya estas listo para vacacionar!");
}

Dejo un ejemplo de como trabajaría más o menos…..

function calcular(){
    var fechaini = new Date(document.getElementById('dateini').value);
    var fechafin = new Date(document.getElementById('datefin').value);
    var diasdif= fechafin.getTime()-fechaini.getTime();
    var contdias = Math.round(diasdif/(1000*60*60*24));
    document.form.r.value=contdias;
}          
<form name="form">
<label>*Solo puedes tomar de estos Días</label>
<br>
<input type="text" readonly="readonly" value="10">
<br><br>
<label id="lblB">Selecciona cuales serán tus días</label> 
<br>
<label id="lblB"> Del </label>  
<br>
<input type="date" id="dateini" name="D1" min="<?php echo date('Y-m-d'); ?>" value="<?php echo date('Y-m-d'); ?>">                
<br>
<label id="lblB"> Al </label>
<br>
<input type="date" id="datefin" name="D2" min="<?php echo date('Y-m-d'); ?>" value="<?php echo date('Y-m-d'); ?>">              
                    
<br><br>                      
                
<label>Días solicitados</label>
<br>
<input type="text" id="r"  name="r" readonly="readonly" onkeypress="return valida(event)">  
<br>
<input type="button" value="Calcular" onclick="calcular()">

</form>
Preguntado por: Ben Escobar

Enric Borrallo Rodriguez

Ya casi lo tenias

  function calcular() {
            var fechaini = new Date(document.getElementById('dateini').value);
            var fechafin = new Date(document.getElementById('datefin').value);
            var diasdif = fechafin.getTime() - fechaini.getTime();
            var contdias = Math.round(diasdif / (1000 * 60 * 60 * 24));
            document.form.r.value = contdias;
            var diasMax = document.getElementById('diasMax').value
            if ( contdias  > diasMax) {
                alert("Te estas pasando de dias");
               document.getElementById("diasMax").value=0
            } else if ( contdias  < diasMax) {
                alert("No estas ocupando todos los días");
               document.getElementById("diasMax").value=0
            } else if (diasMax == contdias) {
                alert("Ya estas listo para vacacionar!");
            }
        }
<form name="form">
        <label>*Solo puedes tomar de estos Días</label>
        <br>
        <input id="diasMax" type="text" readonly="readonly" value="10">
        <br><br>
        <label id="lblB">Selecciona cuales serán tus días</label>
        <br>
        <label id="lblB"> Del </label>
        <br>
        <input type="date" id="dateini" name="D1" min="<?php echo date('Y-m-d'); ?>"
               value="<?php echo date('Y-m-d'); ?>">
        <br>
        <label id="lblB"> Al </label>
        <br>
        <input type="date" id="datefin" name="D2" min="<?php echo date('Y-m-d'); ?>"
               value="<?php echo date('Y-m-d'); ?>">

        <br><br>

        <label>Días solicitados</label>
        <br>
        <input type="text" id="r" name="r" readonly="readonly" onkeypress="return valida(event)">
        <br>
        <input type="button" value="Calcular" onclick="calcular()">

    </form>

Pues a mí me parece que lo tienes listo todo, sólo faltaría saber dónde colocar las piezas para que jueguen al completo. Yo creo que lo haría así, podrías probarlo:

function calcular(){
    var fechaini = new Date(document.getElementById('dateini').value);
    var fechafin = new Date(document.getElementById('datefin').value);
    var diasdif  = fechafin.getTime()-fechaini.getTime();
    var total    = Math.round(diasdif/(1000*60*60*24));
    //Te hacía falta ésta linea para hacer la suma y apareciera el 
    //resultado correcto
    document.form.r.value = total;
    var numero   = parseInt(document.getElementById("valor_fijo").value);

   if(total>numero)
   {
  alert("Te estas pasando de dias");
  document.getElementById("r").value=0;
   }
   else
   {
  if(total<numero)
  {
     alert("No estas ocupando todos los días");
     document.getElementById("r").value=0;
  }
  else
  {
     if(total==numero)
     {
        alert("Ya estas listo para vacacionar!");
     }
  }
   }
   }          
<form name="form">
<label>*Solo puedes tomar de estos Días</label>
<br>
<!-- AQUI hubo que asignarle un ID al este input para luego poder accederlo -->
<input type="text" readonly="readonly" id="valor_fijo" value="10">
<br><br>
<label id="lblB">Selecciona cuales serán tus días</label> 
<br>
<label id="lblB"> Del </label>  
<br>
<input type="date" id="dateini" name="D1" min="<?php echo date('Y-m-d'); ?>" value="<?php echo date('Y-m-d'); ?>">                
<br>
<label id="lblB"> Al </label>
<br>
<input type="date" id="datefin" name="D2" min="<?php echo date('Y-m-d'); ?>" value="<?php echo date('Y-m-d'); ?>">              
                    
<br><br>                      
                
<label>Días solicitados</label>
<br>
<input type="text" id="r"  name="r" readonly="readonly" onkeypress="return valida(event)">  
<br>
<input type="button" value="Calcular" onclick="calcular()">

</form>

No tengo claro para qué usas el return valida(event) en tu elemento input id “r”, por lo que no lo quité del código.

Fuente

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *