2014-09-22 203 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"); 
      } 
     } 
    }); 
}); 
试试这个