#javascript #jquery #datetimepicker #bootstrap-datetimepicker #eonasdan-datetimepicker
#javascript #jquery #datetimepicker #bootstrap-datetimepicker #eonasdan-datetimepicker
Вопрос:
Я использую eonasdan Bootstrap 3 datetimepicker и добавил 4 часа к параметру defaultDate по умолчанию. но при изменении я пытаюсь удалить эти 4 часа из time, создавая бесконечный цикл и показывая неправильные дату и время.
код следующий
var $datePickerOutput = $('#datePickerOutput'),
d = moment();
if ( $datePickerOutput.length ) {
var defaults = {
inline: true,
sideBySide: true,
useCurrent: false,
defaultDate: d.add(3, 'hours'),
minDate: d,
};
$datePickerOutput.datetimepicker(defaults);
$datePickerOutput.on('dp.change', function(e){
var $this = $(this);
var presentDate = new Date();
var selectedDate = new Date(e.date);
var pd = presentDate.getDate(),
pm = presentDate.getMonth(),
py = presentDate.getFullYear(),
sd = selectedDate.getDate(),
sm = selectedDate.getMonth(),
sy = selectedDate.getFullYear();
if ( ( pd pm py !== sd sm sy ) ) {
console.log(moment(e.date).format('DD-MM-YYYY hh:mm A'));
$(this).data("DateTimePicker").date(e.date.subtract(4, 'hours'));
}
});
}
Комментарии:
1. Непонятно, чего вы пытаетесь достичь, что
pd pm py !== sd sm sy
это значит? Обратите внимание, чтоdate
метод срабатываетdp.change
, поэтому ваш обработчик будет выполняться снова и снова, покаpd pm py !== sd sm sy
не станет false.2. Я просто пытаюсь выяснить текущую дату. если выбранная дата не является сегодняшней, то минус 3 часа от времени и отображения. это то, что я пытаюсь сделать .. и я добавил эту проверку из-за этого. пожалуйста, дайте мне какое-нибудь решение, если я делаю неправильно. Я не очень хорошо разбираюсь в javascript
3. Но проблема возникает только тогда, когда я добавляю
.subtract(4, 'hours')
в строку$(this).data("DateTimePicker").date(e.date.subtract(4, 'hours'));
4. Чтобы проверить, совпадает ли выбранная дата с сегодняшним днем, вы можете использовать moment
isSame
, в вашем случае:moment().isSame(e.date, 'day')
. В любом случае, как я уже говорил ранее, установка новой даты в средство выбора с помощьюdate
метода снова вызоветdp.change
событие.5. тогда как я могу решить эту проблему. Я хотел показать время на сегодня на 4 часа вперед, но когда пользователь выберет следующую дату, он / она увидит текущую дату.