2010-01-07 17 views
24

Tengo 2 cuadros de texto en mi sitio para la fecha de retiro y la fecha de entrega usando el selector de fecha jquery.cómo agregar un día a una fecha usando jquery datepicker

Tengo problemas para configurar el valor de la fecha de entrega un día antes de la fecha de recolección que se seleccionó.

Aquí es lo que tengo:

$('.pickupDate').change(function() { 
    var date2 = $('.pickupDate').datepicker('getDate', '+1d'); 
    $('.dropoffDate').datepicker('setDate', date2); 
}); 

Lo anterior se ejecutará pero el valor de la bajada de texto coincidirá con el valor de arranque en lugar de ser un día antes. por ejemplo: si selecciono 01-01-2010, el código anterior regresa 01-01-2010 en el cuadro de entrega en lugar de 02-01-2010.

¿Alguna idea?

Gracias por su ayuda, Rich

Respuesta

63

Prueba esto:

$('.pickupDate').change(function() { 
    var date2 = $('.pickupDate').datepicker('getDate', '+1d'); 
    date2.setDate(date2.getDate()+1); 
    $('.dropoffDate').datepicker('setDate', date2); 
}); 
+0

Gracias por eso. Funcionó una delicia :) –

+3

Lo anterior también funciona para mí. ¿Pero por qué la parte "+ 1d" en la línea 2? Quité "+ 1d" de la segunda línea y también funciona. – thd

+0

gran solución, intenté otras 10 maneras de incrementar la fecha en javascript y ninguna funcionó. – mircea

4

El selector de fechas ('setDate') establece la fecha en el datepicket no en la entrada.

Debe agregar la fecha y configurarla en la entrada.

var date2 = $('.pickupDate').datepicker('getDate'); 
var nextDayDate = new Date(); 
nextDayDate.setDate(date2.getDate() + 1); 
$('input').val(nextDayDate); 
+1

tuve que antes, pero cuando lo usé sólo sería salida como 'dom 17 de enero de 2010 00:00:00 GMT + 0000 (hora estándar GMT)' en lugar de '17 -01-2010 'incluso si especifiqué una opción de formato de fecha. Muy raro. Gracias por la ayuda sin embargo. –

7

Esta respuesta realmente me ayudó a empezar (novato) -, pero me encontré con un comportamiento extraño cuando me puse una fecha de inicio del 31/12/2014 y añadió 1 por defecto la fecha de finalización. En lugar de darme una fecha de finalización del 01/01/2015, me estaba dando el 02/01/2015 (!!!). Esta versión analiza los componentes de la fecha de inicio para evitar estas rarezas de fin de año.


$("#date_start").datepicker({ 

    minDate: 0, 
    dateFormat: "mm/dd/yy", 

    onSelect: function(selected) { 
     $("#date_end").datepicker("option","minDate", selected); // mindate on the End datepicker cannot be less than start date already selected. 
     var date = $(this).datepicker('getDate'); 
     var tempStartDate = new Date(date); 
     var default_end = new Date(tempStartDate.getFullYear(), tempStartDate.getMonth(), tempStartDate.getDate()+1); //this parses date to overcome new year date weirdness 
     $('#date_end').datepicker('setDate', default_end); // Set as default       
    } 

}); 

$("#date_end").datepicker({ 

    minDate: 0, 
    dateFormat: "mm/dd/yy", 

    onSelect: function(selected) { 
    $("#date_start").datepicker("option","maxDate", selected); // maxdate on the Start datepicker cannot be more than end date selected. 

    } 

}); 
+0

Esta respuesta funcionó para mí. La respuesta aceptada no funcionó. ¿Adivina que depende de qué versión de datepicker tal vez? De todos modos, ¡gracias por esto! –

Cuestiones relacionadas