#javascript #datepicker
#javascript #datepicker
Вопрос:
Я пытаюсь заставить работать ванильный JS Datepicker: https://github.com/mymth/vanillajs-datepicker
Он выдает ошибку: TypeError: undefined не является объектом в e.dataset.дата Это ошибка в коде средства выбора даты, поэтому я не уверен, что не так. Вот моя выноска в функции:
function setDate() {
console.log('DatePickerCk: ' , Datepicker); // shows as 'class ue' - that doesn't seem right
var cdate = $(mycell).attr('dc-oldval');
console.log('CurDate: ' cdate); // ok - 02/07/2020
var dpelem = $(mycell).find('input');
$(dpelem).val(cdate);
console.log('ValofInput: ' , $(dpelem).val()); // ok - "02/07/2020"
console.log('DpElem: ' , dpelem); // ok - hovering over it in console highlights the element in the DOM
var datepicker = new Datepicker(dpelem, {
autohide: true,
daysOfWeekDisabled: [],
daysOfWeekHighlighted: [],
defaultViewDate: cdate,
nextArrow: '>>',
prevArrow: '<<',
todayBtn: false,
todayBtnMode: 1,
todayHighlight: true
});
Datepicker.locales.en = {
days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
today: 'Today',
clear: 'Clear',
titleFormat: 'MM y',
format: 'dd/mm/yyyy',
weekstart: 0
}
}
setDate();
Я вижу дату во входных данных, но выпадающий список для выбора даты не отображается.
Я не назвал это правильно? Я не уверен, в чем проблема.
Ответ №1:
Это выстрел в темноте, но что произойдет, если вы добавите [0] в свой dpelem при настройке вашего Datepicker? Похоже, вы получаете элемент jquery против элемента DOM, как это, вероятно, ожидается.
var datepicker = new Datepicker(dpelem[0]....
В остальном я не вижу ничего плохого в вашем коде. Я быстро собрал небольшой jsfiddle, и, похоже, все в порядке, если предположить, что у вас есть действительная ссылка на ваш входной элемент.
Комментарии:
1. Хорошо, @kman я изменил на элемент DOM, и он примерно работает. Все еще не вижу: (1) Datepicker. locales.ru работает. Я попытался ввести ‘XX’ для daysMin для ‘Su’, но он по-прежнему отображается как Su. (2) Нужно вызвать некоторые вещи после выбора новой даты: пробовал datepicker.hide{…}, но выдает ошибки — не уверен, как что-то делать после завершения DP. Спасибо.
2. Я исправил (2), Все еще нужна небольшая помощь с (1)
3. вам необходимо определить языковые параметры, прежде чем подключать его. Просто переместите свой Datepicker. locales.ru = {…} блокируется перед вашим var datepicker = new Datepicker(dpelem, {….} блокируется. Обновлен jsfiddle
4. Да, это имеет смысл и работает сейчас — спасибо за помощь.