jQuery Datepicker onSelect не работает - PullRequest
1 голос
/ 22 ноября 2010

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

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

$(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();
     }
 });

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

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

Есть идеи, как сделать это, используя экземпляр и не инициализировать снова?

Ответы [ 3 ]

1 голос
/ 24 ноября 2010

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

$("#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();
     }
 });

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

Еще раз спасибо за ваши рекомендации

0 голосов
/ 22 ноября 2010

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

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 голосов
/ 22 ноября 2010

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

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