Я использую http://eonasdan.github.io/bootstrap-datetimepicker/ в моем проекте. Это очень хорошо.
На одной странице у меня есть форма, где строки входных полей могут динамически добавляться или удаляться. В каждой строке есть ввод «startdate» и «enddate», называемый # substitute_0_start и # substitute_0_end . При запуске cloneNode () идентификаторы увеличиваются с помощью javascript. Т.е. после одного клона есть еще одна строка с # substitute_1_start и # substitute_1_end.
Мне нужно настроить параметры входов "startdate" и "enddate". Я использую цикл для перехода по каждой строке и настройки параметров. Это работает, как и ожидалось, вместо этого, если я пытаюсь установить minDate или maxDate соответствующего входа.
<div class="form-group col-md-3 col-xs-6">
<label for="substitute_0_start" class="control-label">ab dem</label>
<div class='input-group date substitute_start' id='substitute_0_start'>
<input type="text" class="form-control datepicker subst_start" name="substitute[0][start]" readonly="readonly"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
<div class="form-group col-md-3 col-xs-6">
<label for="substitute_0_end" class="control-label">bis zum</label>
<div class='input-group date substitute_end' id='substitute_0_end'>
<input type="text" class="form-control datepicker subst_end" name="substitute[0][end]" readonly="readonly"/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
function callDatepickerAndSelect2(){
for (a = 0; a <= i; a++){
// WORKS!
$('#substitute_'+a+'_start').datetimepicker({
format: "DD.MM.YYYY",
minDate: moment().add(1, 'minutes')
});
$('#substitute_'+a+'_end').datetimepicker({
format: "DD.MM.YYYY",
minDate: moment().add(1, 'days')
});
// WORKS NOT FOR CLONED ITEMS
$("#interval_start").on("dp.change", function (e) {
$('.substitute_start').data("DateTimePicker").minDate(e.date);
$('.substitute_end').data("DateTimePicker").minDate(e.date);
});
$("#interval_end").on("dp.change", function (e) {
$('.substitute_start').data("DateTimePicker").maxDate(e.date);
$('.substitute_end').data("DateTimePicker").maxDate(e.date);
});
// THIS DOES NOT WORK!
$("#substitute_"+a+"_start").on("dp.change", function (e) {
$("#substitute_"+ a +"_end").data("DateTimePicker").minDate(e.date);
});
$("#substitute_"+a+"_end").on("dp.change", function (e) {
$("#substitute_"+ a +"_start").data("DateTimePicker").maxDate(e.date);
});
};
}
Каждый раз, когда срабатывает два последних dp.change (), я получаю ошибку Невозможно прочитать свойство 'minDate' из неопределенного или Невозможно прочитать свойство 'maxDate' из неопределенного .
Я не могу найти решение, как установить maxDate для # substitute_X_end , если # substitute_X_start изменено (и проклинать в другом направлении).
Кто-нибудь имеет представление о том, чтобы изначально установить maxDate / minDate для соответствующих входов, и если я сделал cloneNode () ??
EDIT Также я исследовал, что средняя частьне работает для клонированных элементов. Мне кажется, что клонированные элементы доступны для просмотра, но я не могу получить к ним доступ с помощью JavaScript. Я думаю, что мне нужно другое решение для клонирования всего DIV: - (
EDIT 2 Я установил скрипку. Оформить заказ здесь https://jsfiddle.net/qs8kf6wj/ (извините, datetimepicker делаетне работал там, не смог выяснить почему)