2014-09-22 179 views
0

帶範圍選擇器的創建日期選擇器,幫助this answer 當我們選擇「5月1日」和「8月1日」的日期時,用戶無法在5月1日之前更改「from」日期。 在這種情況下是否有任何解決方案,而不是允許用戶瀏覽日期而不是最短日期。用戶應該被允許去prev。但有警報或通知他們選擇了錯誤的日期範圍。jQuery UI日期選擇器範圍選擇器問題

代碼片段:credit

$(function() { 
    $("#from-datepicker").datepicker({ 
     dateFormat: "dd-M-yy", 
     maxDate: "-1d", 
     onClose: function (selectedDate) {    
      // Set 'TO' minDate 
      $("#to-datepicker").datepicker("option", "minDate", selectedDate);    

      // Set 'TO' maxDate at 3 months if before yesterday 
      var dt = new Date($(this).datepicker("getDate")); 
      dt.setMonth(dt.getMonth() + 3); 
      if(dt < Date.now()) { 
       $("#to-datepicker").datepicker("option", "maxDate", dt); 
      } 
     } 
    }); 
    $("#to-datepicker").datepicker({ 
     dateFormat: "dd-M-yy", 
     maxDate: "-1d", 
     onClose: function (selectedDate) { 
      // Set 'FROM' maxDate 
      $("#from-datepicker").datepicker("option", "maxDate", selectedDate); 

      // Set 'FROM' minDate at 3 months if before yesterday 
      var dt = new Date($(this).datepicker("getDate")); 
      dt.setMonth(dt.getMonth() - 3); 
      if(dt < Date.now()) { 
       $("#from-datepicker").datepicker("option", "minDate", dt); 
      } 
     } 
    }); 
}); 

http://jsfiddle.net/4Ln0cxpq/

回答

0

您可以刪除此:

// Set 'TO' minDate 
      $("#to-datepicker").datepicker("option", "minDate", selectedDate); 

這:

// Set 'FROM' maxDate 
      $("#from-datepicker").datepicker("option", "maxDate", selectedDate); 

添加您的檢查,如果從比更大,如果屬實,顯示您的自定義通知

DEMO

1

JsFiddle

$(function() { 
    $("#from-datepicker").datepicker({ 
     dateFormat: "dd-M-yy", 
     onClose: function (selectedDate) {    
      var dt = new Date($(this).datepicker("getDate")); 
      var dtTo = new Date($("#to-datepicker").datepicker("getDate")); 

      if($("#to-datepicker").val()!="" && dt > dtTo) { 
       $("#from-datepicker").val(""); 
       alert("selected date greater than 'To' date"); 
      } 
     } 
    }); 
    $("#to-datepicker").datepicker({ 
     dateFormat: "dd-M-yy", 
     onClose: function (selectedDate) { 
      var dt = new Date($(this).datepicker("getDate")); 
      var dtFrom = new Date($("#from-datepicker").datepicker("getDate")); 

      if($("#from-datepicker").val()!="" && dt<dtFrom){ 
       $("#to-datepicker").val(""); 
       alert("selected date less than 'From' date"); 
      } 
     } 
    }); 
}); 
試試這個