JQuery.datepicker не определен при втором вызове

Моя цель

Я пытаюсь исключить определенные даты из моего средства выбора даты, сделав их недоступными для кликов.

Переполнение стека заставило меня сделать это следующим образом: Пример кода, который я использовал (при переполнении стека)

Мой код:

var myDates = ["05-05-2019","06-05-2019","07-05-2019"]

$('.datepicker').datepicker({
    beforeShowDay: function(date){
        var string = jQuery.datepicker.formatDate('dd-mm-yyyy', date);
        return [ myDates.indexOf(string) == -1 ]
    }
});

Я следовал коду примера, и следующая ошибка продолжает появляться независимо от моих действий, пытающихся решить проблему:

TypeError: jQuery.datepicker is undefined

Ожидаемый результат:

Появляется средство выбора даты и продолжает блокировать три дня, которые я указал в своем myDates.

Дополнительная информация:

Датапикер уже появляется. Итак, датапикер должен работать правильно. Та часть, где я думаю, что что-то пойдет не так, должна быть в этой строке: jQuery.datepicker.formatDate.

Я искал по всему Интернету и, похоже, не нашел никого с такой же проблемой, как у меня. Если бы вы могли помочь мне выяснить, где что-то идет не так, это было бы очень признательно. Я знаю, что вопрос может показаться простым. Я озадачен тем, почему это не работает.

Вы уверены, что датапикер js правильно связан?

Zainul Abideen 03.05.2019 13:10

@ZainulAbideen при первом вызове datepicker работает, так что я так думаю, да

Marty 03.05.2019 13:11

Я понятия не имею, в чем здесь проблема, в примере «Пример кода, который я использовал», он работает без проблем...

golddragon007 03.05.2019 13:13

@ golddragon007 Ну, вот почему я так сбит с толку. Есть и другие способы, но они требуют гораздо больше кода.

Marty 03.05.2019 13:16

попробуйте $.datepicker.formatDate вместо jQuery.datepicker.formatDate

Roy Bogado 03.05.2019 13:18

@ Рой TypeError: $.datepicker is undefined к сожалению

Marty 03.05.2019 13:20

@Marty, похоже, «Пример кода, который я использовал», работает нормально.

Mayank Patel 03.05.2019 13:20

@MayankPatel, вот почему я так запутался, почему это не работает в моем проекте.

Marty 03.05.2019 13:22

может вам не хватает jquery-ui.min.js?

Roy Bogado 03.05.2019 13:23

В каком порядке вы включали свои сценарии? должно быть: 1. jquery 2.jquery-ui

alexP 03.05.2019 13:24

@ Рой Я импортировал jquery-ui, я уверен

Marty 03.05.2019 13:27

Лучший вариант — отредактировать пост и добавить весь код, который у вас есть.

Roy Bogado 03.05.2019 13:38

@ Рой, я ценю тебя! Но я не думаю, что это возможно, так как я работаю над гигантским проектом. У меня есть '/js/jquery-ui.custom.min' в моем файле по умолчанию

Marty 03.05.2019 13:42

@Marty Как ты называешь свой код? Когда он будет исполнен?

golddragon007 03.05.2019 13:50

@golddragon007 Я называю это под html между <script> тегами

Marty 03.05.2019 13:52

Э-э-э, я не уверен, что это хорошо, поместите это в голову или тело и используйте $(window).load() или $(document).ready(). Или хотя бы внутри торца кузова без каких-либо дополнительных вещей.

golddragon007 03.05.2019 13:55

Если вы не покажете нам проблему на месте, мы не сможем вам помочь, рабочий пример работает...

Roy Bogado 03.05.2019 13:59

@golddragon007 Прошу прощения за мою ошибку, и она в $(document).ready(function ()

Marty 03.05.2019 14:00

@Marty Марти, я думаю, у тебя конфликт сценариев. Потому что даже с самым плохим кодом это работает. Итак, я предполагаю, что у вас есть загруженный скрипт (сторонний или пользовательский), который портит этот указатель даты (или вы перезагружаете в какой-то момент библиотеку jquery). Попробуйте удалить скрипты один за другим, и когда он вдруг начнет работать, проблема в этом скрипте. У меня была аналогичная проблема с colorbox, DOM обрабатывался, но не работал... Просто убедитесь, что вы очищаете кеш (включая браузеры или используете жесткое обновление) каждый раз, когда пытаетесь, чтобы убедиться, что вы не загружаете предыдущая версия сайта.

golddragon007 03.05.2019 14:17

@ golddragon007 Думаю, проблема в этом. Довольно мой бутстрап. Я найду способ обойти это. спасибо мой парень

Marty 03.05.2019 14:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
20
189
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мое решение существует для решения проблемы.

Я поместил все свои array данные в object и сделал так:

$('.datepicker').datepicker({
    dateFormat: "dd/mm/yy",
    beforeShowDay: function (date) {
        var day = date.getDate();
        var month = date.getMonth() + 1;
        var year = date.getFullYear();
        var fullDate = day + '-' + month + '-' + year;
        var bDisable = dates.indexOf(fullDate);
        if (bDisable >= 0) {
            return false;
        }
    }
});

Другие вопросы по теме