Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wagner Martins - SC

Date picker

Recommended Posts

Minha dúvida é relacionada ao datapicker do Jquery, seria a seguinte:

 

Como para reservar hotéis, não pode marcar reserva após 1 ano (365 dias) quando o usuario do site clicar na data de entrada do hotel 17/08/2014 por exemplo, no outro calendario de saida do hotel deviria aparecer habilitada apenas os dias 18 e 19 de agosto de 2014 porque completa 365 dias, como eu poderia faze isso no calendario de volta, desabilitando os dias q seja superior a 365 dias? meu código eh esse:

 

$("#Dataentrada_hotel").datepicker({
	minDate: 0,
	maxDate:365,
	numberOfMonths: 2,
	onSelect: function(selected) {
		var d1 = $(this).datepicker("getDate");
        d1.setDate(d1.getDate() + 0);
        var d2 = $(this).datepicker("getDate");
        d2.setDate(d2.getDate() + 30); 
        $("#Datasaida_hotel").datepicker("setDate", null);
        $("#Datasaida_hotel").datepicker("option", "minDate", d1);
        $("#Datasaida_hotel").datepicker("option", "maxDate", d2);
	}
});

$("#Datasaida_hotel").datepicker({ 
	minDate: 0,
	numberOfMonths: 2,
	onSelect: function(selected) {
	  $("#Datasaida_hotel").datepicker("option","maxDate", selected);
	}
}); 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

I aew cara, não sei se entendi muito bem, mas se a data máxima para reserva é de 365 dias, é só setar 365 dias no maxDate, pelo que eu vi, a unica coisa que você tem que fazer seria validar a data saída menor que a de entrada, ficaria mais ou menos assim:

var MAX_DIAS_RESERVA = 365;
				
				$("#Dataentrada_hotel").datepicker({
					minDate: 0,
					maxDate:MAX_DIAS_RESERVA,
					onSelect: function(selected) {
						var diffMin = $(this).datepicker('getDate').getDate() - new Date().getDate();
						$("#Datasaida_hotel").datepicker("option", "minDate", diffMin);
						$("#Datasaida_hotel").datepicker("option", "maxDate", MAX_DIAS_RESERVA);
					}
				});
				
				$("#Datasaida_hotel").datepicker({ 
					minDate: 0,
					maxDate:MAX_DIAS_RESERVA});

espero que ajude, abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe eu explicar melhor,

 

Numa reserva de hotel pode-se efetuar a reserva até 365 dias antes da data de entrada, quando ele escolhe a data de entrada, dentro desses 365 dias no calendario de saída, ele pode escolher até 30 dias após a data de entrada, ou seja o cliente pode ficar 30 dias no máximo hospedado no hotel, até aqui tudo bem consegui fazer com meu código.

 

Minha pergunta é a seguinte,

 

Exemplo, hoje é dia 19/08/2013 e o cliente do site quer fazer uma reserva para o dia 18/08/2014, ele até pode escolher essa data, só que tem que sair ja no dia 19/08/2014, pois como hoje eh dia 19/08/2013, se ele escolher para sair dia 21/08/2013 não irá conseguir fazer a reserva, pois passou de 365 dias. Com isso como eu poderia desabilitar os dias que passam de 1 ano no calendario de saída, um exemplo pratico esta no site da Decolar, eles fazem isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com isso como eu poderia desabilitar os dias que passam de 1 ano no calendario de saída

Cara os dias já estão desabilitados com o código que postei, acho que você não esta sabendo explicar!

 

Não seria habilitar a data de saída com nó máximo 30 dias após a data de entrada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara vc conseguiu exemplificar minha pergunta eh isso mesmo, rsrsrs

 

Mais no seu código esta faltando ele desabilitar as datas de saidas superiores à 30 dias após a data de entrada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ve se é mais ou menos isso:

var MAX_DIAS_RESERVA = 365;
				var MILESSEGUNDOS_TRINTA_DIAS = 86400 * 1000 * 30;
				
				$("#Dataentrada_hotel").datepicker({
					minDate: 0,
					maxDate:MAX_DIAS_RESERVA,
					onSelect: function(selected) {
						var diaSelecionado = $(this).datepicker('getDate');
						$("#Datasaida_hotel").datepicker("option", "minDate", diaSelecionado);
						$("#Datasaida_hotel").datepicker("option", "maxDate", new Date(diaSelecionado.getTime()+ MILESSEGUNDOS_TRINTA_DIAS));
					}
				});
				
				$("#Datasaida_hotel").datepicker({ 
					minDate: 0,
					maxDate:MAX_DIAS_RESERVA});

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blza cara vc chegou na minha dúvida em questão...

 

Como o cliente pode escolher ateh 365 dias antes da data de entrada, qdo ele escolhe por exemplo 18/08/2014, no calendario de entrada deveria aparecer habilitado somente o dia 19/08/2014, pois a partir do dia 20/082014 já é superior a 365 dias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahuashuhu, acho que entendi agora cara, ve se é isso:

var MAX_DIAS_RESERVA = 365;
				var MILESSEGUNDOS_DIAS = 86400 * 1000;
				
				$("#Dataentrada_hotel").datepicker({
					minDate: 0,
					maxDate:MAX_DIAS_RESERVA,
					onSelect: function(selected) {
						var diaSelecionado = $(this).datepicker('getDate');
						var maxDate = new Date(diaSelecionado.getTime()+ MILESSEGUNDOS_DIAS*30);
						var dataMaisUmAno = new Date(new Date().getTime() + MAX_DIAS_RESERVA * MILESSEGUNDOS_DIAS);
						$("#Datasaida_hotel").datepicker("option", "minDate", diaSelecionado);
						
						maxDate.getTime() < dataMaisUmAno.getTime() ?
							$("#Datasaida_hotel").datepicker("option", "maxDate", maxDate):
							$("#Datasaida_hotel").datepicker("option", "maxDate", MAX_DIAS_RESERVA);
					}
				});
				
				$("#Datasaida_hotel").datepicker({minDate: 0,maxDate:MAX_DIAS_RESERVA});

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.