У меня есть следующий код. Но когда я меняю местами значения, оба значения становятся одинаковыми.
Например:
datetimepicker = 25-04-18 17:32 и datetimepicker = 24-04-18 17:32, их нужно поменять местами, но в результате оба являются 24-04-18 17:32.
Почему это происходит?
function swap() {
var start = document.getElementById("datetimepicker").value;
var end = document.getElementById("datetimepicker2").value;
if (start.trim() && end.trim()) {
var date_start = moment(start, 'DD-MM-YY HH:mm');
var date_end = moment(end, 'DD-MM-YY HH:mm');
if (date_start > date_end) {
document.getElementById("datetimepicker").value = end;
document.getElementById("datetimepicker2").value = start;
}
}
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
<input onchange = "swap()" type = "date" id = "datetimepicker" />
<input onchange = "swap()" type = "date" id = "datetimepicker2" />@mplungjan код большой, потому что я использую библиотеку datetimepicker. Я не хотел помещать больше необходимой информации.
Я бы предложил переименовать ваши переменные. Используйте что-то вроде startDate и endDate.
Ваш код в том виде, в каком он был опубликован, НАЧАЛЬНО работает отлично, если я удалю файл только для чтения.
Я вижу, что это работает, но у меня такой же код, и он не меняет местами элементы ...
@Lechucico Единственное отличие, я думаю, в том, что тогда у вас есть датапикер, зарегистрированный на элементах. Попробуйте удалить datepicker и посмотрите, работает ли он для вас. Затем выясните, что делает datepicker
Я играл с ним, и иногда он делает некоторые странные вещи. Интересно, может быть, это должна быть проверка. Я предполагаю, что вы не хотите, чтобы дата начала была позже даты окончания. Поскольку кому-то это действительно может понадобиться временно, и это может сбить с толку пользователей, лучше оставить его доступным и не разрешать отправку формы, потому что в этот момент она не прошла валидацию. Именно так решают эту ситуацию большую часть времени.
@Xatenev Я удалил указатель даты, и он работает. Похоже, datepicker что-то с этим делает.
Например, я пользователь и выбираю 26-е число в качестве даты начала. Затем 27 числа в качестве даты окончания. Тогда я думаю, что, может, мне стоит сделать это 24 и 25 числа. Затем я выбираю дату окончания 25-го числа, но это меняет дату начала. Затем я запутался в том, что происходит, потому что я намеревался изменить дату начала на 24-е, но теперь датой начала является 25-е, что заставило меня выполнить дополнительный щелчок. Я не думаю, что это экономит клики, и я думаю, что это причина, по которой вы, вероятно, захотите реализовать такую замену дат. Итак, на мой взгляд, неудачная проверка - ваш лучший выбор.
@adpro Я пойду по этому пути, т.к. похоже, что с этим datepicker какая-то ошибка.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я сделал вам отрывок. Пожалуйста, добавьте код, который устанавливает дату - сейчас они доступны только для чтения