Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Datepicker

Estas en el tema de Datepicker en el foro de Jquery en Foros del Web. Buenas noches , Tengo dos inputs con datepicker, y quisiera que en el segundo debas seleccionar a partir del día siguiente que hayas seleccionado en ...
  #1 (permalink)  
Antiguo 27/11/2014, 12:47
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años, 7 meses
Puntos: 1
Datepicker

Buenas noches ,

Tengo dos inputs con datepicker, y quisiera que en el segundo debas seleccionar a partir del día siguiente que hayas seleccionado en el primer input, ¿Cómo lo puedo hacer?.

Código:
$('div#module_rent div.box input#date_re').datepicker({
		
			minDate: '+1d',
			maxDate: '+12m',
			dateFormat: 'dd/mm/yy',
			showButtonPanel: true,
			onClose: function (selectedDate) {			
				$('div#module_rent div.box input#date_de').datepicker('option', 'minDate', selectedDate);		
			}
		
		});
			
		$('div#module_rent div.box input#date_de').datepicker({
			
			minDate: '+1d',
			maxDate: '+12m',
			dateFormat: 'dd/mm/yy',
			showButtonPanel: true,
			onClose: function (selectedDate) {
				$('div#module_rent div.box input#date_re').datepicker('option', 'maxDate', selectedDate);
			}
						
		});
Muchas Gracias :)
  #2 (permalink)  
Antiguo 27/11/2014, 16:30
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Datepicker

He leído que se pueden deshabilitar fechas del calendario a partir de un rango dado o mediante las propiedades minDate y maxDate, tal y como se explica aquí, pero, para tu caso, se me ocurre otra alternativa. Podrías seleccionar una fecha en el primer calendario y automáticamente asignar al segundo la fecha siguiente, pero si el usuario selecciona una fecha menor en el segundo calendario, se le muestra un mensaje en el que se le avisa que no lo debe de hacer y se le asigna, nuevamente, la fecha siguiente a la elegida en el primer calendario. Para darle mayor seguridad al proceso, inicialmente, el segundo calendario estaría deshabilitado y solo se habilitaría al momento se seleccionar una fecha en el primero.

Código HTML:
Ver original
  1. <input id = "foo" readOnly />
  2. <input id = "bar" readOnly disabled />

Código Javascript:
Ver original
  1. var foo = $("#foo"),
  2.     bar = $("#bar");
  3.  
  4. foo.datepicker({
  5.     onSelect: function(){
  6.         var fecha = $(this).datepicker("getDate");
  7.         fecha.setDate(fecha.getDate() + 1); //Le sumo 1 día
  8.         bar.datepicker("setDate", fecha);
  9.         if (bar.prop("disabled")){
  10.             bar.prop("disabled", false);   
  11.         }
  12.     }
  13. });
  14.  
  15. bar.datepicker({
  16.     onSelect: function(){
  17.         var primero = foo.datepicker("getDate"),
  18.             segundo = $(this).datepicker("getDate");
  19.         if (segundo <= primero){
  20.             alert("Debe de seleccionar una fecha mayor");
  21.             primero.setDate(primero.getDate() + 1); //Le sumo 1 día
  22.             $(this).datepicker("setDate", primero);
  23.         }
  24.     }
  25. });

DEMO

Como la propiedad getDate devuelve un objeto Date, puedo realizar la comparación directamente y aplicar cualquiera de los métodos de dicho objeto.

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
  #3 (permalink)  
Antiguo 28/11/2014, 10:48
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Datepicker

Hola Alexis88 :) ,
Muchas gracias, verás, me pasó una web mi cliente, se ve que las ideas las cojer de allí, llevo tiempo mirando y ellos lo han conseguido hacer, su url es:

http://orlandorc.com/

Es el formulario del comienzo, la verdad que no consigo ver como lo hacer, muchas gracias y si pudieras ver como lo hacen para que quedara un poco más limpio te lo agradecería muchísimo :)

Un saludo :)
  #4 (permalink)  
Antiguo 28/11/2014, 11:17
(Desactivado)
 
Fecha de Ingreso: abril-2013
Ubicación: rosario
Mensajes: 248
Antigüedad: 11 años, 6 meses
Puntos: 17
Respuesta: Datepicker

En la pagina q te pasaron el flaco hace esto
Código Javascript:
Ver original
  1. $('#dpd1').datepicker({
  2.     weekStart: 1,
  3.     startDate: startDate,
  4.     endDate: fechaFin,
  5.     autoclose: true,
  6.     format: 'dd/mm/yyyy'
  7. })
  8.     .on('changeDate', function(selected){
  9.         startDate = new Date(selected.date.valueOf());
  10.         startDate.setDate(startDate.getDate(new Date(selected.date.valueOf())));
  11.         startDate.setDate(startDate.getDate()+1);
  12.         ToEndDate = new Date(selected.date.valueOf());
  13.         ToEndDate.setDate(ToEndDate.getDate(new Date(selected.date.valueOf())));
  14.         ToEndDate.setDate(ToEndDate.getDate()+diasMax);
  15.         $('#dpd2').datepicker('setStartDate', startDate);
  16.         $('#dpd2').datepicker('setEndDate', ToEndDate);
  17.         $('#dHoraRecogida').show();
  18.         $('#fHoraRecogida').focus();
  19.     });
  #5 (permalink)  
Antiguo 28/11/2014, 12:00
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Datepicker

Hola diurno10 :)

Muchas gracias por la respuesta, sí, lo he visto, pero claro, ver se puede ver, otra cosa es entenderlo XD, y adaptarlo, ¿Cómo puedo adaptarlo al que tengo? ¿Podrías decirme que hace paso a paso?

Perdona si ando algo perdido, no sé mucho de jquery, sé pero no tanto, muchas gracias :)
  #6 (permalink)  
Antiguo 28/11/2014, 14:11
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Datepicker

Después de analizar el algoritmo utilizado en dicha página (que creo que fue lo primero que debiste poner ), he simplificado la manera en la que lo hacen:

Código Javascript:
Ver original
  1. var inicio = new Date(),
  2.     fin = new Date(),
  3.     inicio2, fin2;
  4.  
  5. fin.setDate(fin.getDate() + 365);
  6.  
  7. $("#foo").datepicker({
  8.     minDate: inicio,
  9.     maxDate: fin,
  10.     onSelect: function(){
  11.         inicio2 = $(this).datepicker("getDate");
  12.         fin2 = $(this).datepicker("getDate");
  13.        
  14.         inicio2.setDate(inicio2.getDate() + 1);
  15.         fin2.setDate(fin2.getDate() + 365);
  16.        
  17.         $("#bar").datepicker({
  18.             minDate: inicio2,
  19.             maxDate: fin2
  20.         });
  21.     }
  22. });

Lo que hay que hacer es más simple de lo que parece. Primero, declaramos dos variables a las cuales les asignaremos a cada una el objeto Date y que, por defecto, toman la fecha de hoy, además, declaramos dos variables que usaremos más adelante. Luego, al valor de la fecha final para el primer calendario, le sumo 365 días, con lo cual, el usuario tendrá el rango de 1 año para seleccionar cualquiera de dichas fechas.

Enseguida, en el primer calendario, establezco los rangos de selección, utilizando las dos propiedades que mencioné en mi anterior respuesta, además, cuando seleccionemos una fecha, a las dos variables finales que declaré al inicio, les asigno la fecha que acabamos de seleccionar. A la primera de ellas, le sumo 1 un día y, a la segunda, 365, para que así la fecha final del alquiler sea como máximo igual a un año después de la fecha de inicio, es decir, la seleccionada en el primer calendario. Finalmente, asignamos estos dos datos al segundo calendario como sus rangos de selección.

DEMO

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
  #7 (permalink)  
Antiguo 29/11/2014, 11:05
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Datepicker

Hola Alexis :) ,

Perdona el descuido :S, se me pasó, he conseguido hacerlo y lo he comprendido :), muchas gracias por tu ayuda, me ha servido de mucho, y a demás ya tengo algo nuevo aprendido para próxima ocasión poder utilizarlo :)

Marco como solucionado.

Un saludo y muchísimas gracias :))

Etiquetas: datepicker
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:30.