2012-02-21 2 views
0

Я хотел бы знать, как мы можем установить дату выписки между датой регистрации. Например, если мы выберем месяц июня (когда текущий месяц - февраль) и 15-й день. Таким образом, он дает право выбирать день между 30 днями (30 лимитов). Таким образом, дата окончания будет: 15 июля. Здесь мы имеем код:Как ограничить минимальные и максимальные даты для jQuery-ui datepicker на основе другой даты

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/black-tie/jquery-ui.css" media="screen" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script> 
<style type="text/css"> 
body{ font: 60.0% "Trebuchet MS", sans-serif; margin: 50px; } 
</style> 
<script type="text/javascript"> 
    $(function() { 
     $('#from').datepicker({ 
      numberOfMonths: 2, 
      firstDay: 1, 
      dateFormat: 'DD dd-mm-yy', 
      minDate: '0', 
      maxDate: '+2Y', 
      onSelect: function(dateStr) { 
       var min = $(this).datepicker('getDate'); 
       $('#to').datepicker('option', 'minDate', min || '0'); 
       datepicked(); 
      } 
     }); 
     $('#to').datepicker({ 
      numberOfMonths: 2, 
      firstDay: 1, 
      dateFormat: 'DD dd-mm-yy', 
      minDate: '0', 
      maxDate: '+2Y', 
      onSelect: function(dateStr) { 
       var max = $(this).datepicker('getDate'); 
       $('#from').datepicker('option', 'maxDate', max || '+2Y'); 
       datepicked(); 
      } 
     }); 
    }); 
    var datepicked = function() { 
     var from = $('#from'); 
     var to = $('#to'); 
     var nights = $('#nights'); 
     var fromDate = from.datepicker('getDate') 
     var toDate = to.datepicker('getDate') 
     if (toDate && fromDate) { 
      var difference = 0; 
      var oneDay = 1000 * 60 * 60 * 24; 
      var difference = Math.ceil((toDate.getTime() - fromDate.getTime())/oneDay); 
      nights.val(difference); 
     } 
    } 
</script> 
<input type="text" id="from" name="from" size="28" style="width:194px; /*Tag Style*/" value="" > 
<input type="text" id="to" name="to" size="28" style="width:194px; /*Tag Style*/" value="" > 
<input type="text" id="nights" name="nights" size="4" style="width:50px; /*Tag Style*/" value="" readonly="readonly"> 

Наш главный мотив, чтобы сделать этот код для регистрации, проверить и ночи. В случае, если даты заезда могут быть в любом месяце 2012-2013 гг., А дата выписки будет указана только после 30 дней, а общая ночевка будет 30 ночей.

ответ

5

Посмотрите на this demo. Я добавил несколько строк в onSelect события так:

onSelect: function(dateStr) { 
     var d1 = $(this).datepicker("getDate"); 
     d1.setDate(d1.getDate() + 0); // change to + 1 if necessary 
     var d2 = $(this).datepicker("getDate"); 
     d2.setDate(d2.getDate() + 30); // change to + 29 if necessary 
     $("#to").datepicker("setDate", null); 
     $("#to").datepicker("option", "minDate", d1); 
     $("#to").datepicker("option", "maxDate", d2); 
     datepicked(); 
    } 

Согласно моему пониманию полеганию бизнеса, даты должны быть включительно - т.е. июня/15/2012 + 30 ночей должны быть июнь/14/2012. Но я следовал примеру, упомянутому в первых нескольких строках вопроса.

+0

что-то осталось, что связано с датой выписки. он должен быть между датой регистрации + 30 дней. если мы выберем 28 июня, последняя дата проверки будет 28 июля. и мы не можем выбрать 29 июля., но на примере выше мы можем легко выбрать 40 ночей .. – user1089288

+0

Я _now_ понимаю вопрос. Я обновил свой ответ. –

+0

Большое спасибо Salman :) – user1089288

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