Buenos días ,
Miren estoy haciendo una web en la que tengo tres inputs:
select[name="reserve[collection][location]"]
input[name="reserve[collection][date]"]
input[name="reserve[collection][hour]"]
select[name="reserve[return][location]"]
input[name="reserve[return][date]"]
input[name="reserve[return][hour]"]
Los de "date" y "hour" son inputs normales y corrientes con readonly, location es un select en el que tiene cada option un data (data-is-airport), 0 es que no es un aeropuerto y 1 es un aeropuerto, la idea es que como mucho deje escoger hasta dos años en fechas, siempre tiene que ser ya para a partir de mañana (incluido), la cosa es donde está el minInterval, el select[name="reserve[return][location]"] en esto no tiene nada que ver, en caso de que se seleccione en select[name="reserve[collection][location]"] una opcion que sí sea aeropuerto lo que debería de hacer es dejar 3 días de margen en minInterval, mientras si no es aeropuerto va a ser un día de margen.
He hecho todo lo que he podido y no he conseguido hacerlo funcionar. Agradezco la ayuda :)
Código Javascript
:
Ver originalvar minIntervalDays = 1; // Days
var minIntervalDaysCollectionAirport = 3; // Days
var startDateTextBox = $('input[name="reserve[collection][date]"]');
var startTimeTextBox = $('input[name="reserve[collection][hour]"]');
var endDateTextBox = $('input[name="reserve[return][date]"]');
var endTimeTextBox = $('input[name="reserve[return][hour]"]');
$.timepicker.datetimeRange(
startDateTextBox,
endDateTextBox,
{
minDate: '+1d',
beforeShow: function(input, inst) {
var isairport = $('select[name="reserve[collection][location]"]').find(':selected').data('is-airport');
var changeMinInterval = (isairport == 1 ? minIntervalDaysCollectionAirport : minIntervalDays);
return {
minInterval: (1000 * 60 * 60 * 24) * changeMinInterval,
};
},
maxDate: '+2y',
/* minInterval: (1000 * 60 * 60 * 24), */
dateFormat: 'yy-mm-dd',
timeFormat: 'HH:mm',
start: {
altField: startTimeTextBox,
},
end: {
altField: endTimeTextBox,
},
altFieldTimeOnly: true,
}
);
Código HTML:
Ver original<select name="reserve[collection][location]" required> <option data-is-airport="0" value="" selected disabled>Ubicación
</option> <option data-is-airport="0" value="1">Benidorm [Oficina]
</option> <option data-is-airport="1" value="2">Alicante [Aeropuerto]
</option> <option data-is-airport="1" value="3">Valencia [Aeropuerto]
</option> <option data-is-airport="1" value="4">Murcia [Aeropuerto]
</option> <input type="text" name="reserve[collection][date]" data-time="" placeholder="yyyy-mm-dd" value="" readonly required> <input type="text" name="reserve[collection][hour]" placeholder="HH:ii" value="" readonly required> <select name="reserve[return][location]" required> <option data-is-airport="0" value="" selected disabled>Ubicación
</option> <option data-is-airport="0" value="1">Benidorm [Oficina]
</option> <option data-is-airport="1" value="2">Alicante [Aeropuerto]
</option> <option data-is-airport="1" value="3">Valencia [Aeropuerto]
</option> <option data-is-airport="1" value="4">Murcia [Aeropuerto]
</option> <input type="text" name="reserve[return][date]" data-time="" placeholder="yyyy-mm-dd" value="" readonly required> <input type="text" name="reserve[return][hour]" placeholder="HH:ii" value="" readonly required>
He probado también con change y onChange, el problema es que si al entrar cambio a aeropuerto y selecciono fecha no me da el margen de tres días, pero ya a la segunda empieza a ir bien, lo que no me funciona es el return, según varias páginas así debería de ir, a mi no me funciona en el de BeforeShow.