JQuery UI "$ (" # datepicker "). datepicker не является функцией"

Когда я использую DatePicker, плагин jQuery UI, на существующей странице .aspx я получаю ошибки, которые:

$("#datepicker").datepicker is not a function

Однако, когда я копирую и вставляю тот же код, который создает и использует datePicker для HTML файла, который также находится в том же каталоге, что и страница aspx, он работает безупречно. Это приводит меня к предположению, что на странице aspx есть некоторые файлы JS, которые предотвращают правильную загрузку файлов JQuery DatePicker или jQuery UI.

Может ли кто-нибудь подтвердить мои убеждения или дать какие-либо советы по поиску виновника, мешающего плагинам jQuery UI?

Ответ 1

Я боролся с подобной проблемой часами. Затем выяснилось, что jQuery был включен дважды, один раз программой, что я добавлял функцию jQuery и один раз нашим внутренним отладчиком.

Ответ 2

Если есть другая библиотека, использующая переменную $, вы можете сделать это:

var $j = jQuery.noConflict();
$j("#datepicker").datepicker();

Также убедитесь, что ваш javascript включен в правильном порядке, поэтому основная библиотека jquery определена перед jquery.ui. У меня были проблемы с этой проблемой.

Ответ 3

Эта ошибка обычно появляется, когда вам не хватает файла из набора пользовательских интерфейсов jQuery.

Удостоверьтесь, что у вас есть все файлы, файлы пользовательского интерфейса jQuery, а также CSS и изображения и что они находятся в правильно связанном каталоге/каталоге на вашем сервере.

Ответ 4

Если вы считаете, что есть конфликт, вы можете использовать jQuery.noConflict() в своем коде. Подробности находятся в docs.

СПРАВОЧНАЯ МАГИЯ - КРАТКИЕ СВЕДЕНИЯ ДЛЯ Jquery

Если вам не нравится вводить полный текст "jQuery" все время, есть некоторые альтернативные ярлыки:

Переназначить jQuery другому ярлыку var $j = jQuery; (Это может быть лучший подход, если вы хотите использовать разные библиотеки) Используйте следующие техника, позволяющая использовать $внутри блока кода без постоянная перезапись $:

(function($) { /* some code that uses $ */ })(jQuery)

Примечание. Если вы используете это техники, вы не сможете использовать Методы прототипа внутри этой капсулированной функции, которые ожидают, что $будет Прототип $, поэтому вы делаете выбор использовать только jQuery в этом блок. Использовать аргумент для DOM готовое событие:

jQuery(function($) { /*some code that uses $ */ });

Примечание: Опять же, внутри этого блока вы не можете использовать Методы прототипа

Вот с конца документов и может быть вам полезно

Ответ 5

Пойдите для очевидного в первую очередь: хорошо ли вы ссылаетесь на файл jquery-ui.js?

Попробуйте использовать вкладку "Сеть" firebug, чтобы узнать, загружена ли она, или код JavaScript "Информация\Просмотр" панели инструментов веб-разработчиков.

Ответ 6

Вы пытались использовать Firebug для 1) определить, что нет ошибок Javascript, и 2) что элемент #datepicker существует на странице?

Скорее всего, перед вызовом datepicker возникает ошибка, которая препятствует выполнению вызова datepicker.

Ответ 7

Я знаю, что этот пост довольно старый, но для справки я исправил эту проблему с помощью обновления версии datepicker

Также стоит попробовать, чтобы избежать отладки часов.

https://cdnjs.com/libraries/bootstrap-datepicker

Ответ 8

У меня была эта проблема, и перемещение ссылок и кода JS в нижней части страницы до того, как тег </body> исправил это для меня.

Ответ 9

Также проверьте разрешения для каталога, в который вы загружаете файлы. По какой-то причине, когда я скачал это, по умолчанию он был сохранен в папке без доступа! Наверняка навсегда выяснилось, что это проблема, но мне просто нужно было изменить разрешение для каталога и его содержимого - установите его так КАЖДОЕ = ЧИТАЙТЕ ТОЛЬКО. Прекрасно работает.

Ответ 10

jQuery "$ (" # datepicker "). datepicker не является функцией

Я исправил проблему, поставив ниже три файла в разделе тела формы в конце.

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js" type="text/javascript"></script>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="Stylesheet" type="text/css" />

Ответ 11

Недавно я столкнулся с этой проблемой - проблема заключалась в том, что я включил файлы пользовательского интерфейса jQuery в тег head, но в библиотеке Telerik, которую я использовал, был включен jQuery в нижней части тега body (таким образом, по-видимому, повторно инициализировался jQuery и выгрузка ранее загруженных модулей пользовательского интерфейса).

Решение заключалось в том, чтобы выяснить, где именно был включен jQuery, и включая скрипты jQuery UI после этого.

Ответ 12

Я столкнулся с подобной проблемой. Когда я изменил ссылку script из самозакрывающихся тегов (т.е. <script src=".." />) на пустые узлы (т.е. <script src=".."></script>), мои ошибки ушли, и я мог внезапно ссылаться на функции пользовательского интерфейса jQuery.

В то время я не понимал, что это просто мозговой удар, который я не закрываю для этого. (Я публикую это просто на случай, если кто-либо другой, проходящий через поток, будет иметь аналогичную проблему.)

Ответ 13

Некоторые файлы не загружаются до вашего вызова.

Например: Ваш код:

<%= javascript_include_tag "distpicker.min" %>
<%= javascript_include_tag "distpicker.data.min" %>

Изменить на это:

<%= javascript_include_tag "distpicker.data.min" %>
<%= javascript_include_tag "distpicker.min" %>

Ответ 14

Я мог бы исправить эту проблему, удалив пакет jquery на _Layout.cshtml

Заголовок

    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <script src="~/Scripts/kendo/2015.2.902/kendo.all.min.js"></script>
    ...

нижнего колонтитула

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)

Смените нижний колонтитул на

    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)