5

На моей странице есть два datepickers, и оба они загружаются. Условие заключается только в том, что дата начала никогда не была высокой по отношению к дате окончания. Средство Дата окончания Атрибут (minDate) должен быть изменен, когда Дата начала изменена datepicker, и то же самое, когда дата окончания даты изменилась, минимальный график календаря даты даты начала должен соответствовать значению конечной даты.Bootstrap datepicker change minDate/startDate from another datepicker

Я надеюсь, вы понимаете мою проблему

$(document).ready(function(){ 
 
    
 
     $("#startdate").datepicker({ 
 
     
 
     todayBtn: 1, 
 
     autoclose: true, 
 
     
 
     
 
     }).on('changeDate', function (selected) { 
 
     var minDate = new Date(selected.date.valueOf()); 
 
     $('#enddate').datetimepicker('setStartDate', minDate); 
 
    }); 
 
    
 
     $("#enddate").datepicker(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.4.0/js/bootstrap-datepicker.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"> 
 

 

 

 
<input type="text" placehoder="Start Date" id="startdate"/> 
 
<input type="text" placehoder="End Date" id="enddate"/>

+0

пожалуйста, рассмотреть вопрос о повторном формулируя свой вопрос/положить примеры, вы получите больше ответов :) –

+1

Вы вызываете неправильный метод 'datetimepicker' в строке' $ ('# enddate'). Datetimepicker ('setStartDate', minDate); ' – pqdong

+0

Хорошо, тогда какой правильный метод? – vikujangid

ответ

50

Я сделал jsfiddle делать то, что вы хотите. Как прокомментировал pqdong, вы вызывали datetimepicker вместо datepicker при установке даты окончания.

Здесь работает JavaScript:

$(document).ready(function(){ 

    $("#startdate").datepicker({ 
     todayBtn: 1, 
     autoclose: true, 
    }).on('changeDate', function (selected) { 
     var minDate = new Date(selected.date.valueOf()); 
     $('#enddate').datepicker('setStartDate', minDate); 
    }); 

    $("#enddate").datepicker() 
     .on('changeDate', function (selected) { 
      var maxDate = new Date(selected.date.valueOf()); 
      $('#startdate').datepicker('setEndDate', maxDate); 
     }); 

}); 
+0

Отличное решение! Что делать, если я хочу, чтобы setStartDate выбрал значение selected.date плюс 5 дней? Спасибо, – sidpat

+1

@sidpat Вы можете добавить 5 дней к стоимости несколькими способами. Следующее, пожалуй, проще всего: 'var minDate = new Date (selected.date.valueOf() + (1000 * 60 * 60 * 24 * 5));' – Razzildinho

+0

Вы меня спасли ... Большое вам спасибо –

1

У меня нет достаточно репутации tocomment на отличный ответ Razzildinho, но действительно хотел предложить одно небольшое дополнение, которое поможет пользователям, которые, чтобы выделить выбранный день на втором datepicker. Вы можете сделать это, добавив следующую строку:

$('#enddate').datepicker('setDate', minDate); 

Таким образом, в контексте будет выглядеть следующим образом:

$(document).ready(function(){ 

$("#startdate").datepicker({ 
    todayBtn: 1, 
    autoclose: true, 
}).on('changeDate', function (selected) { 
    var minDate = new Date(selected.date.valueOf()); 
    $('#enddate').datepicker('setStartDate', minDate); 
    $('#enddate').datepicker('setDate', minDate); // <--THIS IS THE LINE ADDED 
}); 

$("#enddate").datepicker() 
    .on('changeDate', function (selected) { 
     var maxDate = new Date(selected.date.valueOf()); 
     $('#startdate').datepicker('setEndDate', maxDate); 
    }); 

}); 

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

  • Нет связанных вопросов^_^