it-roy-ru.com

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

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

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

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

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

103
burnt1ce

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

183
Eugene van der Merwe

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

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

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

31
MacAnthony

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

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

18
random

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

ССЫЛКА НА ВОЛШЕБСТВО - SHORTCUTS FOR Jquery

Если вам не нравится печатать полностью "JQuery" все время, есть некоторые альтернативные ярлыки:

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

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

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

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

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

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

8
AutomatedTester

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" />
6
Krishna

Сначала сделайте очевидное: хорошо ли вы ссылаетесь на файл jquery-ui.js? 

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

5
eKek0

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

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

3
1kevgriff

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

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

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

2
Yannickv

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

1
Matthew Fries

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

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

1
user15486

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

1
Banjer

Какой-то файл не загружается перед звонком.

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

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

Правка на это:

<%= javascript_include_tag "distpicker.data.min" %>
<%= javascript_include_tag "distpicker.min" %>
0
David tsang

Вы пытались использовать $ ("# <% = TxtDateElementId.ClientID%>"). Datepicker (); вместо $ ("# txtDateElementId"). datepicker (); при выборе элемента по идентификатору с использованием JQuery.

0
Emil Filip

Я мог бы решить эту проблему, удалив пакет 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)
0
jaimenino

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

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

0
Peter Bernier