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

В Вычисление Рабочих дней можно найти хорошую статью об этом предмете, но как Вы видите не то, чтобы усовершенствованный.

--Changing current database to the Master database allows function to be shared by everyone.
USE MASTER
GO
--If the function already exists, drop it.
IF EXISTS
(
    SELECT *
    FROM dbo.SYSOBJECTS
    WHERE ID = OBJECT_ID(N'[dbo].[fn_WorkDays]')
    AND XType IN (N'FN', N'IF', N'TF')
)
DROP FUNCTION [dbo].[fn_WorkDays]
GO
 CREATE FUNCTION dbo.fn_WorkDays
--Presets
--Define the input parameters (OK if reversed by mistake).
(
    @StartDate DATETIME,
    @EndDate   DATETIME = NULL --@EndDate replaced by @StartDate when DEFAULTed
)

--Define the output data type.
RETURNS INT

AS
--Calculate the RETURN of the function.
BEGIN
    --Declare local variables
    --Temporarily holds @EndDate during date reversal.
    DECLARE @Swap DATETIME

    --If the Start Date is null, return a NULL and exit.
    IF @StartDate IS NULL
        RETURN NULL

    --If the End Date is null, populate with Start Date value so will have two dates (required by DATEDIFF below).
     IF @EndDate IS NULL
        SELECT @EndDate = @StartDate

    --Strip the time element from both dates (just to be safe) by converting to whole days and back to a date.
    --Usually faster than CONVERT.
    --0 is a date (01/01/1900 00:00:00.000)
     SELECT @StartDate = DATEADD(dd,DATEDIFF(dd,0,@StartDate), 0),
            @EndDate   = DATEADD(dd,DATEDIFF(dd,0,@EndDate)  , 0)

    --If the inputs are in the wrong order, reverse them.
     IF @StartDate > @EndDate
        SELECT @Swap      = @EndDate,
               @EndDate   = @StartDate,
               @StartDate = @Swap

    --Calculate and return the number of workdays using the input parameters.
    --This is the meat of the function.
    --This is really just one formula with a couple of parts that are listed on separate lines for documentation purposes.
     RETURN (
        SELECT
        --Start with total number of days including weekends
        (DATEDIFF(dd,@StartDate, @EndDate)+1)
        --Subtact 2 days for each full weekend
        -(DATEDIFF(wk,@StartDate, @EndDate)*2)
        --If StartDate is a Sunday, Subtract 1
        -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday'
            THEN 1
            ELSE 0
        END)
        --If EndDate is a Saturday, Subtract 1
        -(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday'
            THEN 1
            ELSE 0
        END)
        )
    END
GO

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

115
задан kamaci 3 October 2011 в 08:38
поделиться

6 ответов

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

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

6
ответ дан 24 November 2019 в 02:22
поделиться

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

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

3
ответ дан 24 November 2019 в 02:22
поделиться

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

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

20
ответ дан 24 November 2019 в 02:22
поделиться

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

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

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

34
ответ дан 24 November 2019 в 02:22
поделиться

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

ССЫЛКА НА МАГИЮ - ЯРЛЫКИ ДЛЯ JQUERY

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

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

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

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

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

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

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

8
ответ дан 24 November 2019 в 02:22
поделиться

У меня только что возникла эта проблема, и ссылки JS и код перемещены в нижнюю часть страницы перед тегом исправил это для меня.

1
ответ дан 24 November 2019 в 02:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: