2015-01-06 3 views
0

Привет, я сделал календарь для вашей помощи.JQuery datepicker: предельные даты не работают

Однако инструкция if для сравнения от и до не работает правильно.

правило является

давайте предположим, что С и К выбираются.

тогда, если дата дата больше, чем дата, то дата должна быть установлена ​​на дату на 3 месяца позже даты От. но если нет, то дата не нуждается в изменении.

Я не знаю, почему инструкция if не работает.

и есть ли инструмент отладки? как debug() в PHP?

Пожалуйста, дайте мне знать.

Спасибо

$(function() { 
    $("#from").datepicker({ 
     maxDate: 0, 
     showButtonPanel : true, 
     closeText : 'Reset', 
     onClose: function() { 
      var today = new Date(); 
      var from = $('#from').datepicker('getDate'); 
      var from3 = from; 
      from3.setMonth(from3.getMonth() + 3);//3 month limit 
      var to = $('#to').datepicker('getDate'); 
      var tdate = $("#from").datepicker("getDate"); 

      if(to == ""){ 
       $("#from").datepicker("option", "maxDate", today); 
      } 
      else{ 
       if ($(window.event.srcElement).hasClass('ui-datepicker-close')) { 
        $.datepicker._clearDate(this); 
        $("#from").datepicker("option", "maxDate", today); 
       } 
       $("#from").datepicker("option", "maxDate", today); 
       tdate.setMonth(tdate.getMonth() + 3); 
       tdate = (tdate>today) ? today : tdate; 
       $("#to").datepicker("option", "maxDate", tdate); 

       if(from3 > to){ 
        $('#to').datepicker('setDate', from3); 
       } 
       else if(from > to){ 
        $('#to').datepicker('setDate', from); 
       } 
      } 
     } 
    }); 
    $("#to").datepicker({ 
     maxDate: 0, 
     showButtonPanel : true, 
     closeText : 'Reset', 
     onClose: function() { 
      var today = new Date(); 
      var from = $('#from').datepicker('getDate'); 
      var from3 = from; 
      from3.setMonth(from3.getMonth() + 3);//3 month limit 
      var to = $('#to').datepicker('getDate'); 

      if(from == ""){ 
       $('#from').datepicker('option', 'maxDate', today); 
      } 
      else{ 
       if ($(window.event.srcElement).hasClass('ui-datepicker-close')) { 
        $.datepicker._clearDate(this); 
        $("#to").datepicker("option", "maxDate", today); 
       } 
       $("#to").datepicker("option", "maxDate", today); 
       if(from3 > to){ 
        $('#from').datepicker('setDate', from3); 
       } 
       else if(from > to){ 
        $('#to').datepicker('setDate', from3); 
       } 
      } 
     } 
    }); 
}); 
+0

повторите проблему в скрипке и поделитесь с нами –

+0

http://jsfiddle.net/hoja/ddg664rn/12/ –

ответ

1

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

$(function() { 
    $("#from").datepicker({ 
     maxDate: 0, 
     showButtonPanel: true, 
     closeText: 'Reset', 
     onClose: function (e) { 
      var from = $('#from').datepicker('getDate'); 
      var to = $('#to').datepicker('getDate'); 

      if(from != null) { 
       // Limit the value of "TO" date to current "FROM" date 
       $("#to").datepicker("option", "minDate", from); 

       // Set "TO" date to "FROM" + 3 months if it is currently less than FROM 
       if(to != null && to < from) { 
        $('#to').datepicker('setDate', new Date(from.getFullYear(), from.getMonth() + 3, from.getDate())); 
       } 
      } 
     } 
    }); 
    $("#to").datepicker({ 
     maxDate: 0, 
     showButtonPanel: true, 
     closeText: 'Reset', 
     onClose: function (e) { 
      var from = $('#from').datepicker('getDate'); 
      var to = $('#to').datepicker('getDate'); 

      if(to != null) { 
       // Limit the value of "FROM" date to current "TO" date 
       $("#from").datepicker("option", "maxDate", to); 

       // Set "FROM" date to "TO" - 3 months if it is currently more than TO 
       if(from != null && from > to) { 
        $('#from').datepicker('setDate', new Date(to.getFullYear(), to.getMonth() - 3, to.getDate())); 
       } 
      } 
     } 
    }); 
}); 

Здесь Вы можете найти рабочую демо: http://jsfiddle.net/ddg664rn/13/

В этой версии, даты изменяются на +/- 3 месяца, если условия не выполняются (то есть, если вы устанавливаете дату FORM больше, чем дату TO, или дату TO меньше даты FORM). Я добавил minDate/maxDate, которые также ограничивают неправильный ввод: после выбора даты FROM дата TO может быть меньше этого значения.

+0

Спасибо. Это был не тот, который я хотел, но я редактирую ваш код, чтобы сделать правильный. спасибо –

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