Вы объявляете переменную dates
на каждой итерации цикла.Поэтому, когда цикл завершен, переменная dates
, которую вы используете в обработчике onSelect, равна последнему элементу, который был установлен в цикле.
Обновление Попробуйте этот код:
Update2 Еще одна проблема связана с переменной i
.Его текущее значение доступно в цикле, поэтому позже, когда используется обработчик onSelect, значение i имеет значение, как в последней итерации.Чтобы преодолеть это, вы должны поместить i
в контекст другой функции, поэтому я поместил код в тело цикла в другую функцию, которой я передаю переменную i
.
Update3 И еще одна вещь - логика выбора опции (minDate или maxDate) должна была быть изменена.
$(document).ready(function(){
var count=0;
count=<?php echo count($locations);?>;
for(i=1;i<=count;i++)
{
(function(i) {
$('#txtFromDate_'+i+', #txtToDate_'+i).datepicker({
defaultDate: new Date(),
changeMonth: true,
changeYear: true,
dateFormat: 'yy-mm-dd',
onSelect: function(selectedDate) {
var option, otherPicker;
if (this.id == "txtFromDate_"+i) {
otherPicker = $("#txtToDate_"+i);
option = "minDate";
} else {
otherPicker = $("#txtFromDate_"+i);
option = "maxDate";
}
var instance = $(this).data("datepicker");
var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
otherPicker.datepicker("option", option, date);
}
};
})(i);
}
});