2010-12-17 6 views
3

Я пытаюсь установить два сборщика даты, например, http://jqueryui.com/demos/datepicker/#date-range. Но если вы вручную вводите дату в этот пример, вы можете разбить код. например выберите дату с даты, затем сборщик останавливает вас от выбора даты до даты, но вы можете вручную ввести дату, которая была раньше.jQuery UI datepicker диапазон дат

Я настроил пример здесь http://jsfiddle.net/Ruhley/s3h5L/

+0

Это не для меня очевидно, что вы просите. – Incognito 2010-12-17 01:30:33

+0

два сборщика даты jquery, как в демо. Но правило, которое должно быть до даты, может быть нарушено, если вы вручную вводите дату. я не могу понять, как исправить это – 2010-12-17 01:49:09

ответ

12
  1. первая идея
    • использовать beforeShow вместо onSelect, чтобы установить диапазон дат макс/мин. Вы по-прежнему можете вводить вручную неправильные значения, но как только вы попытаетесь открыть дату, он автоматически исправит себя.
    • Во избежание ручного вмешательства вы можете сделать поля readonly.
  2. вторая идея
    • Используйте beforeShow и в то же время сделать некоторые ручной проверки на change случае полей. (http://jsfiddle.net/s3h5L/4/)
1

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

<script>  
$(function() { 
    var dates = $("#datepicker1, #datepicker2").datepicker({ 
     changeMonth: true, changeYear: true,dateFormat: "yy-mm-dd", 


     beforeShow: function() { 
      var other = this.id == "from" ? "#datepicker2" : "#datepicker1"; 
      var option = this.id == "from" ? "maxDate" : "minDate"; 
      var selectedDate = $(other).datepicker('getDate'); 

      $(this).datepicker("option", option, selectedDate); 
     } 
    }).change(function(){ 
     var other = this.id == "from" ? "#datepicker2" : "#datepicker1"; 

     if ($('#datepicker1').datepicker('getDate') > $('#datepicker2').datepicker('getDate')) 
      $(other).datepicker('setDate', $(this).datepicker('getDate')); 
    }); 
}); 
</script> 
Смежные вопросы