Foros del Web » Programando para Internet » Javascript » Frameworks JS »

[SOLUCIONADO] Calcular Diferencia entre 2 Fechas, aun input con checkbox

Estas en el tema de Calcular Diferencia entre 2 Fechas, aun input con checkbox en el foro de Frameworks JS en Foros del Web. Saludos a toda la comunidad tengo este problema con el cual no estoy pudiendo solucionarlo el Caso es q tengo 2 Input con datepicker y ...
  #1 (permalink)  
Antiguo 13/08/2014, 15:58
 
Fecha de Ingreso: marzo-2007
Mensajes: 17
Antigüedad: 17 años, 1 mes
Puntos: 0
Pregunta Calcular Diferencia entre 2 Fechas, aun input con checkbox

Saludos a toda la comunidad tengo este problema con el cual no estoy pudiendo solucionarlo

el Caso es q tengo 2 Input con datepicker y necesito calcular en tiempo real la cantidad de dias atraves de estas 2 fechas y ese calculo debe ir a otro input que esta bloqueado

y si por alguna razon deseo poner ese calculo manual necesito habilitar ese input que esta bloqueado y hacer una edicion a ese input.

Estare infinitamente agradecito por su ayuda.

Código HTML:
Ver original
  1.  
  2. <script src="jquery/jquery.js"></script>
  3. <link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css">
  4. <script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
  5.  
  6.  
  7. $(function () {
  8. $("#fecha1").datepicker({
  9.       changeMonth: true,
  10.       changeYear: true
  11.     });
  12. $("#fecha2").datepicker({
  13.       changeMonth: true,
  14.       changeYear: true
  15.     });
  16. });
  17.  
  18. $.datepicker.regional['es'] = {
  19.  closeText: 'Cerrar',
  20.  prevText: '<Ant',
  21. nextText: 'Sig>',
  22.  currentText: 'Hoy',
  23.  monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
  24.  monthNamesShort: ['Ene','Feb','Mar','Abr', 'May','Jun','Jul','Ago','Sep', 'Oct','Nov','Dic'],
  25.  dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
  26.  dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],
  27.  dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],
  28.  weekHeader: 'Sm',
  29.  dateFormat: 'dd/mm/yy',
  30.  firstDay: 1,
  31.  isRTL: false,
  32.  showMonthAfterYear: false,
  33.  yearSuffix: ''
  34.  };
  35.  $.datepicker.setDefaults($.datepicker.regional['es']);
  36. $(function () {
  37. $("#fecha").datepicker();
  38. });
  39.  
  40. </script>
  41.  
  42.  
  43. </head>
  44.  
  45. <body>
  46.     <form name='frm'>
  47.         <div class="control-group">
  48.             <label>Desde Fecha:</label>
  49.             <input type="text" name="de_fecha" id="fecha1"/>
  50.         </div>
  51.         <div class="control-group">
  52.             <label>Hasta Fecha:</label>
  53.             <input type="text" name="a_fecha" id="fecha2"/>
  54.         </div>
  55.         <div class="control-group">
  56.             <label>Total Dias:</label>
  57.             <input type="text" name="total" disabled/>
  58.             <input type="checkbox" id="casilla" value="1"/>Valor Manual
  59.         </div>
  60.     </form>
  61. </body>
  62. </html>
  #2 (permalink)  
Antiguo 14/08/2014, 00:14
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Calcular Diferencia entre 2 Fechas, aun input con checkbox

Para que el cálculo sea automático, debes de asignar una función al atributo onSelect del widget datepicker. En dicha función, tomas las fechas de ambas cajas, calculas la cantidad de días que representan ambas fechas (recordando que se toma el tiempo transcurrido desde el 1 de enero de 1970), las restas y muestras la diferencia en la tercera caja.

Código Javascript:
Ver original
  1. function diferencia(){
  2.     var fecha1 = $("#fecha1").val(),
  3.         fecha2 = $("#fecha2").val();
  4.            
  5.     if (fecha1.length && fecha2.length){
  6.         var arr1 = fecha1.split("/"), //Separamos los datos de la fecha, formando un array con ellos
  7.             arr2 = fecha2.split("/"), //Separamos los datos de la fecha, formando un array con ellos
  8.             dias1 = (new Date(arr1[2], arr1[1], arr1[0]).getTime() / 1000) / 86400, //Calculamos la cantidad de días que representa
  9.             dias2 = (new Date(arr2[2], arr2[1], arr2[0]).getTime() / 1000) / 86400, //Calculamos la cantidad de días que representa
  10.             dif = dias2 > dias1 ? dias2 - dias1 : dias1 - dias2; //Restamos la cantidad de días que representa cada fecha
  11.         $("[name=total]").val(dif); //Asignamos la resta a la tercera caja
  12.     }
  13. }
  14.    
  15. $("#fecha1, #fecha2").datepicker({
  16.     changeMonth: true,
  17.     changeYear: true,
  18.     onSelect: diferencia
  19. });

Para calcular el tiempo representado por cada fecha, extraigo cada dato de cada una de las fechas y utilizando el objeto Date y sus métodos, calculo la cantidad de días que representa cada fecha. Luego, realizo la resta entre ambas cantidades, para finalmente asignar dicho resultado a la tercera caja. Todo esto solo ocurrirá cuando ambas cajas tengas las fechas asignadas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 14/08/2014 a las 00:29 Razón: Mejora
  #3 (permalink)  
Antiguo 14/08/2014, 08:22
 
Fecha de Ingreso: marzo-2007
Mensajes: 17
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Calcular Diferencia entre 2 Fechas, aun input con checkbox

muchisimas gracias por tu ayuda Alexis88 me sirvio eficientemente tu ayuda. mil gracias

ahora necesito q la tercera casilla pueda editarse manualmente y espero solucionarlo. muchas gracias por tu ayuda
  #4 (permalink)  
Antiguo 14/08/2014, 09:09
 
Fecha de Ingreso: marzo-2007
Mensajes: 17
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Calcular Diferencia entre 2 Fechas, aun input con checkbox

comparto con todos el ejemplo completo:
Código HTML:
Ver original
  1.  
  2. <script src="jquery/jquery.js"></script>
  3. <link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css">
  4. <script type="text/javascript" src="jquery/jquery-ui.min.js"></script>
  5.  
  6. function diferencia(){
  7.     var fecha1 = $("#fecha1").val(),
  8.         fecha2 = $("#fecha2").val();
  9.            
  10.     if (fecha1.length && fecha2.length){
  11.        var arr1 = fecha1.split("/"), //Separamos los datos de la fecha, formando un array con ellos
  12.            arr2 = fecha2.split("/"), //Separamos los datos de la fecha, formando un array con ellos
  13.            dias1 = (new Date(arr1[2], arr1[1], arr1[0]).getTime() / 1000) / 86400, //Calculamos la cantidad de días que representa
  14.            dias2 = (new Date(arr2[2], arr2[1], arr2[0]).getTime() / 1000) / 86400, //Calculamos la cantidad de días que representa
  15.            dif = dias2 > dias1 ? dias2 - dias1 : dias1 - dias2; //Restamos la cantidad de días que representa cada fecha
  16.         $("[name=total]").val(dif); //Asignamos la resta a la tercera caja
  17.     }
  18. }
  19.  
  20. $(function () {
  21. $("#fecha1, #fecha2").datepicker({
  22.     changeMonth: true,
  23.     changeYear: true,
  24.     onSelect: diferencia
  25. });
  26. });
  27.  
  28. $.datepicker.regional['es'] = {
  29.  closeText: 'Cerrar',
  30.  prevText: '<Ant',
  31. nextText: 'Sig>',
  32.  currentText: 'Hoy',
  33.  monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
  34.  monthNamesShort: ['Ene','Feb','Mar','Abr', 'May','Jun','Jul','Ago','Sep', 'Oct','Nov','Dic'],
  35.  dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
  36.  dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'],
  37.  dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'],
  38.  weekHeader: 'Sm',
  39.  dateFormat: 'dd/mm/yy',
  40.  firstDay: 1,
  41.  isRTL: false,
  42.  showMonthAfterYear: false,
  43.  yearSuffix: ''
  44.  };
  45.  $.datepicker.setDefaults($.datepicker.regional['es']);
  46. $(function () {
  47. $("#fecha").datepicker();
  48. });
  49.  
  50. </script>
  51.  
  52. </head>
  53.  
  54. <body>
  55.     <form name='frm' id="frm">
  56.         <div class="control-group">
  57.             <label>Desde Fecha:</label>
  58.             <input type="text" name="de_fecha" id="fecha1"/>
  59.         </div>
  60.         <div class="control-group">
  61.             <label>Hasta Fecha:</label>
  62.             <input type="text" name="a_fecha" id="fecha2"/>
  63.         </div>
  64.         <div class="control-group">
  65.             <label>Total Dias:</label>
  66.             <input type="text" name="total" id="total" disabled/>
  67.             <input type="checkbox" id="casilla" value="1" onclick="JavaScript:document.frm.total.disabled = !this.checked"/>Valor Manual
  68.         </div>
  69.     </form>
  70. </body>
  71. </html>

Etiquetas: calcular, checkbox, diferencia, html, input, javascript, js, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:18.