2012-06-21 44 views
6

Tengo dos calendarios datepickers, uno para una fecha de inicio y otro para una fecha de finalización.jQuery UI datepicker: agregue 6 meses a otro datepicker

Lo que quiero es establecer dinámicamente el DefaultDate del segundo datepicker para que sea seis meses más tarde que el primero, cuando se selecciona la primera fecha.

sé cómo informar de la fecha fisrt al segundo selector de fechas, pero no saben cómo agregar seis meses para el primero y luego agregarlo como el defaultdate del segundo selector de fechas

Aquí está mi código:

$(".firstcal").datepicker({ 
    dateFormat: "dd/mm/yy", 
    onSelect: function (dateText, inst) { 
     var date = $.datepicker.parseDate('dd/mm/yy', dateText); 
     var $sec_date = $(".secondcal"); 
     $sec_date.datepicker("option", "defaultDate", date); 
    } 
}); 
$(".secondcal").datepicker({ 
    dateFormat: "dd/mm/yy" 
}); 

muchas gracias por su ayuda

Editar:

En selector de fechas, la función para agregar seis meses para tal fecha: es labele d "+ 6M". Solo quiero agregar "+6 M" a la primera fecha y enviarla como la fecha predeterminada a la segunda.

Respuesta

7
  1. analizar la cadena de la fecha seleccionada en un JavaScript objeto de fecha.
  2. Usa Date.getMonth() y Date.setMonth() para cambiar el mes. La última función aumenta/disminuye automáticamente el año si es necesario.
  3. Utilice el método setDate de jQuery datepicker para cambiar la fecha del segundo datepicker (configurar defaultDate no le dará los resultados deseados).
onSelect: function(dateText, instance) { 
    date = $.datepicker.parseDate(instance.settings.dateFormat, dateText, instance.settings); 
    date.setMonth(date.getMonth() + 6); 
    $(".secondcal").datepicker("setDate", date); 
} 

Demo here

+0

Gracias Salman A! Perfecto ! –

0

Aquí está el código que utilizo para establecer la fecha máxima de un segundo diálogo un mes más tarde que el primero. Así que usted acaba de establecer la fecha predeterminada en lugar

var beginsDate=$('#dlg_begins').datepicker('getDate'); 
    var monthMillisec=30*24*60*60*1000; 
    var maxDate=new Date(); 
    maxDate.setTime(beginsDate.getTime() + monthMillisec); 

    $('#dlg_expires').datepicker('option', 
    { 
     'maxDate':maxDate, 
     'minDate':beginsDate 
    }); 
+0

Gracias Matt, me ayuda, pero en parte: por cada mes no tiene la misma cantidad de días, el resultado es incorrecto. Si agrego 15778463000 milisegundos (la bruja es 182,62 días), el primero de julio se fija el 30 de diciembre en lugar del primero de enero –

2

Para añadir 6 meses a una fecha

var second_date = new Date(date); 
second_date.setMonth(second_date.getMonth()+6); //+6 is however many months 

continuación, actualizar el valor

$("#secondcal").val(second_date); //It is probably better to work with ID