2010-11-22 5 views
1

Я использую событие onSelect, чтобы установить минимальное значение EndDate, равное значению, заданному как StartDate. У меня один и тот же код на нескольких страницах, но в одном из них он не работает. Если я выбираю значение в StartDate, datepicker не отображается, когда я иду в поле EndDate. Страницы загружаются и обрабатываются с помощью ajax.jQuery Datepicker onSelect не работает

Мой код выглядит следующим образом:

$(document).ready(function() { 

$("#strStartDate").datepicker({ 
      dateFormat: 'dd/mm/yy', 
      constrainInput: true, 
      firstDay: 1, 
      hideIfNoPrevNext: true, 
      onSelect: function(){ 
       $("#strEndDate").datepicker("option", "minDate", $("#strStartDate").val()); 
      } 
    }); 

    $("#strEndDate").datepicker({ 
      dateFormat: 'dd/mm/yy', 
      constrainInput: true, 
      firstDay: 1, 
      hideIfNoPrevNext: true 
    }); 
}); 

Любая помощь очень ценится. Заранее спасибо.

Используя идеи, лежащие в комментариях мне удалось сделать почти что я хочу

$("#strStartDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
}); 

$("#strEndDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
     beforeShow: function (input, inst) { 
      inst.settings.minDate = $("#strStartDate").val(); 
    } 
}); 

Приведенный выше код ограничивает пользователя от сдачи в конечную дату меньше даты начала, однако, если уже имеется значение в конце date, и вы измените дату начала на значение, большее, чем дата окончания, для которого дата окончания должна быть равна дате начала. Это то, что я пытался сделать с кодом ниже в моем начале кода

onSelect: function(){ 
     $("#strEndDate").datepicker("option", "minDate", $("#strStartDate").val()); 
    } 

Любая идея, как это сделать с помощью экземпляра и не инициализировать снова?

ответ

0

Я не уверен, что это решит вашу проблему, но попробуйте это:

$("#strStartDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
     onSelect: function(selectedDate){ 
      $("#strEndDate").datepicker("option", "minDate",selectedDate); 
     } 
}); 
+0

К сожалению, это не сработало – user516514 2010-11-24 15:40:52

0

Это должно делать то, что вам нужно:

function fromTo(startDate, endDate) { 
    $(startDate + ", " + endDate).datepicker({ 
    onClose: function (dateText, inst) { 
     if ("#" + inst.id === startDate) { 
     $(endDate).datepicker("option", "minDate", $(startDate).val()); 
     } 
    }, 
    beforeShow: function (input, inst) { 
     if (inst.id == $(endDate).get(0).id) { 
     inst.settings.minDate = $(startDate).val(); 
     } 
    }, 
    dateFormat: 'mm/dd/yy', 
    constrainInput: true, 
    firstDay: 1, 
    hideIfNoPrevNext: true 
    }); 
} 

Использование fromTo("#startdate", "#enddate");

+0

я не понимаю, как использовать эту функцию. Когда будет вызвана эта функция? – user516514 2010-11-24 15:41:18

1

Ok ребята ... Хорошие новости ... по крайней мере для меня :)

$("#strStartDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
     onSelect: function(){ 
      if ($("#strStartDate").val() > $("#strEndDate").val()){ 
       $("#strEndDate").val($("#strStartDate").val()); 
      } 
     } 
}); 

$("#strEndDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
     beforeShow: function (input, inst) { 
      inst.settings.minDate = $("#strStartDate").val(); 
    } 
}); 

Это окончательный код. Он создает только один экземпляр каждого datepicker и выполняет необходимую проверку, если вы хотите использовать его в качестве выбора диапазона дат. снова

Спасибо за ваши руководящие принципы

Смежные вопросы