Событие с датой изменения даты бутстрапа не запускается, когда вручную редактируются даты или дата очистки
<script type="text/javascript">
// When the document is ready
$(document).ready(function () {
$('.datepicker').datepicker({
format: "yyyy-mm-dd",
}).on('changeDate', function(ev){
// do what you want here
$(this).datepicker('hide');
}).on('changeDate', function(ev){
if ($('#startdate').val() != '' && $('#enddate').val() != ''){
$('#period').text(diffInDays() + ' d.');
} else {
$('#period').text("-");
}
});
});
</script>
Итак, как выглядит мой датпикер. Поэтому в основном, когда я меняю дату, нажимая мышь, она работает хорошо, однако, когда я вручную меняю дату на клавиатуре или вручную очищаю дату даты, событие события не вызывается. Является ли это ошибкой или я делаю что-то неправильно здесь?
Ответы
Ответ 1
Вы должны использовать событие change
на самом входе, если вы хотите ответить на ввод вручную, потому что событие changeDate
предназначено только для того, когда дата изменяется с помощью datepicker.
Попробуйте что-то вроде этого:
$(document).ready(function() {
$('.datepicker').datepicker({
format: "yyyy-mm-dd",
})
//Listen for the change even on the input
.change(dateChanged)
.on('changeDate', dateChanged);
});
function dateChanged(ev) {
$(this).datepicker('hide');
if ($('#startdate').val() != '' && $('#enddate').val() != '') {
$('#period').text(diffInDays() + ' d.');
} else {
$('#period').text("-");
}
}
Ответ 2
В версии 2.1.5
changeDate был переименован в change.dp, поэтому изменение менялось не для меня
$("#datetimepicker").datetimepicker().on('change.dp', function (e) {
FillDate(new Date());
});
также необходимо изменить класс css с datepicker на datepicker-input
<div id='datetimepicker' class='datepicker-input input-group controls'>
<input id='txtStartDate' class='form-control' placeholder='Select datepicker' data-rule-required='true' data-format='MM-DD-YYYY' type='text' />
<span class='input-group-addon'>
<span class='icon-calendar' data-time-icon='icon-time' data-date-icon='icon-calendar'></span>
</span>
</div>
Форматирование даты также работает в таких столицах, как этот формат данных = "ММ-ДД-ГГГГ"
это может быть полезно для кого-то, что мне очень тяжело:)
Ответ 3
Новая версия изменилась.. для последней версии используйте следующий код:
$('#UpToDate').datetimepicker({
format:'MMMM DD, YYYY',
maxDate:moment(),
defaultDate:moment()
}).on('dp.change',function(e){
console.log(e);
});
Ответ 4
Попробуйте следующее:
$(".datepicker").on("dp.change", function(e) {
alert('hey');
});
Ответ 5
Я нашел для нее короткое решение.
Дополнительный код не требуется, просто запускайте событие changeDate. Например.
$('.datepicker').datepicker().trigger('changeDate');
Ответ 6
Это должно заставить работать в обоих случаях
function onDateChange() {
// Do something here
}
$('#dpd1').bind('changeDate', onDateChange);
$('#dpd1').bind('input', onDateChange);
Ответ 7
В зависимости от того, какой инструмент выбора даты для Bootstrap вы используете, на данный момент это известная ошибка:
Код: https://github.com/uxsolutions/bootstrap-datepicker
(Документы: https://bootstrap-datepicker.readthedocs.io/en/latest/)
Вот отчет об ошибке:
https://github.com/uxsolutions/bootstrap-datepicker/issues/1957
Если у кого-то есть решение/обходной путь для этого, было бы здорово, если бы вы включили его.
Ответ 8
У меня есть эта версия о datetimepicker https://tempusdominus.github.io/bootstrap-4/ и по любой причине не работает событие изменения с jquery, но с JS vanilla это делает
Я так понимаю
document.getElementById('date').onchange = function(){ ...the jquery code...}
Я надеюсь, что работа для вас