2013-07-18 3 views
0

У меня есть 2 datepicker для заполнения checkin текстовое поле и checkout текстовое поле. Я должен включить только checkin +13 дней в checkout datepicker. Что я пробовал -Как отключить даты в jQuery datepicker?

 $("#Chkin").datepicker({ dateFormat: 'dd/mm/yy', minDate: '+0', onClose: function (dateText, inst) { 
      if ($("#ctl00_ContentPlaceHolder1_hdnDateformat").val() == "dd/mm/yy") { 
       var parts = dateText.split("/"); 
       var cin = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0])); 
      } 
      else { 
       var cin = new Date(dateText); 
      } 
      var cout = new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+1);   
      $("#Chkout").datepicker('option', 'minDate', cout).datepicker('show'); 
      showDays(); 
     } 
     }); 
     var cin = new Date($("#Chkin").val()); 
     var cout = new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+1); 
     var maxOut= new Date(cin.getDate()+13); 
     $("#Chkout").datepicker({ dateFormat: 'dd/mm/yy', minDate: cout, maxDate: maxOut, onSelect: showDays }); 

Где я пошла не так?

+0

в коде в конце у вас есть дополнительный}); вероятно, из документа. Уже – abc123

+0

есть ли страница или скрипт js, чтобы помочь вам отладить это? –

ответ

0

я мог сортировать ее, наконец. Вот код-

$("#Chkin").datepicker({ dateFormat: $("#ctl00_ContentPlaceHolder1_hdnDateformat").val(), minDate: '+0', onClose: function (dateText, inst) { 
      if ($("#ctl00_ContentPlaceHolder1_hdnDateformat").val() == "dd/mm/yy") { 
       var parts = dateText.split("/"); 
       var cin = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0])); 
      } 
      else { 
       var cin = new Date(dateText); 
      } 
      var cout = new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+1); 
      var maxOut= new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+14); 
      $("#Chkout").datepicker('option', 'minDate', cout); 
      $("#Chkout").datepicker('option', 'maxDate', maxOut); 
      showDays(); 
     } 
     }); 
     var cin = new Date($("#Chkin").val()); 
     var cout = new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+1); 
     var maxOut= new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+14); 
     $("#Chkout").datepicker({ dateFormat: $("#ctl00_ContentPlaceHolder1_hdnDateformat").val(), minDate: cout, maxDate: maxOut, onSelect: showDays }); 

Что изменения я сделал называется функция option как this-

  $("#Chkout").datepicker('option', 'minDate', cout); 
      $("#Chkout").datepicker('option', 'maxDate', maxOut); 
1

Я смог заставить его работать, используя следующий код. Обратите внимание, что мне пришлось немного отклоняться от вашего вставленного кода, так как у меня не было доступа к функции showDays. В любом случае проблема в вашем коде заключалась в том, что при создании объекта даты maxOut вы использовали var maxOut = new Date (cin.getDate() + 13), который фактически создал объект даты, используя cin.getDate() + 13 в качестве данный год. Я также устанавливаю параметр maxdate на выводе datepicker в функции onclose. См аргументы дату конструктора в http://www.w3schools.com/js/js_obj_date.asp

$(function() { 

$("#Chkin").datepicker({ dateFormat: 'dd/mm/yy', minDate: '+0', onClose: function (dateText, inst) { 
    var cin = $(this).datepicker("getDate"); // this returns a date object, or null is nothing is selected. 
    if(cin != null && cin != 'Invalid Date'){ // check for a valid date object, definitely can be done in a better way. 
     var cout = new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+1); 
     var maxOut = new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+13); 

     $("#Chkout").datepicker('option', 'minDate', cout) 
      .datepicker("option", "maxDate", maxOut) 
      .datepicker('show'); 

    } 
} 
}); 


var cin = $("#Chkin").datepicker("getDate"); //new Date($("#Chkin").val()); 

if(cin != null && cin != 'Invalid Date'){ // check for a valid date object, definitely can be done in a better way. 
    var cout = new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+1); 
    var maxOut= new Date(cin.getFullYear(), cin.getMonth(), cin.getDate()+13); 
    $("#Chkout").datepicker({ dateFormat: 'dd/mm/yy', minDate: cout, maxDate: maxOut}); 

}else{ 
    $("#Chkout").datepicker({ dateFormat: 'dd/mm/yy'}); 
} 


}); 
+1

Блок if-else не влияет на область видимости переменной. – nullability

+0

согласился, удалил предыдущий пост, чтобы найти подходящий ответ. –

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