jQuery UI "$ (" # datepicker "). datepicker não é uma função"
Quando uso o DatePicker, o plugin de interface do usuário do jQuery, em uma página .aspx existente, recebo erros que:
No entanto, quando copio e colo o mesmo código que cria e usa o datePicker em um arquivo HTML que também está no mesmo diretório da página aspx, ele funciona perfeitamente. Isso me leva a supor que existem alguns arquivos JS na página aspx que impedem que os arquivos JS da UI do datePicker ou talvez do jQuery sejam carregados corretamente.
Alguém pode confirmar minhas crenças ou fornecer dicas sobre como encontrar o culpado que está interferindo nos plugins de interface do usuário do jQuery?
Você pode postar o código jQuery relevante, por favor #
Como você está incluindo o plug-in datepicker na página - está em um ScriptManagerProxy ou está escrevendo diretamente na página? Tem certeza de que está sendo carregado? Se sim, quais outros plugins você está incluindo? Tem certeza de que incluiu ui.core.js?
— James Kolpack 31/07/2009
Eu encontrei o problema Eu gostaria de ter encontrado esta solução ontem, em oposição a uma hora depois de postar esta pergunta. O código JS que eu escrevi faz referência ao arquivo jQuery e jQuery UI javascript agiu como um módulo. Seu pai também faz referência ao jQuery na parte inferior da tag body (portanto, 2 referências ao jQuery). Como o jQuery é reinicializado após a interface do usuário do jQuery, a interface do usuário do jQuery é eliminada como um plug-in, portanto, por que meu código não conseguiu encontrar o plug-in DatePicker.
Como estou usando o Webpack, eu precisava usar o jquery-ui-bundle. stackoverflow.com/a/39230057/470749
Eu lutei com um problema semelhante por horas. Aconteceu que o jQuery foi incluído duas vezes, uma vez pelo programa em que eu estava adicionando uma função jQuery e uma vez pelo nosso depurador interno.
Este foi o meu problema também. Eu tinha uma referência à minha própria biblioteca jQuery, juntamente com o CDN jQuery Tools, que, sem saber, incluía o jQuery.
Este também foi o meu problema. Estou usando o superfish e ele também estava carregando o jquery. Eu não notei isso até agora.
— Henrique Ordine
@HenriqueOrdine verifique se o jQuery não está incluído duas vezes na página.
Este também foi o meu problema. Eu estava usando ativos comuns no pipeline de ativos do Rails e estava declarando jquery no meu meta arquivo de nível superior (application.js) E tinha um arquivo jquery min na minha pasta JS. Declaração dupla. Acabei de remover a declaração jquery.
Se houver outra biblioteca que esteja usando a variável $, você pode fazer isso:
Verifique também se as inclusões do javascript estão na ordem correta, para que a biblioteca principal do jquery seja definida antes do jquery.ui. Eu tive que causar problemas.
— MacAnthony
Verifique também se as inclusões do javascript estão na ordem correta, para que a biblioteca principal do jquery seja definida antes do jquery.ui. Eu tive que causar problemas << que é a resposta correta para mim.
— Macaesar 17/10
Esse erro geralmente aparece quando um arquivo está faltando no conjunto de UI do jQuery.
Verifique se você possui todos os arquivos, os arquivos da interface do usuário do jQuery, bem como o CSS e as imagens, e se eles estão no local do arquivo / diretório vinculado corretamente no seu servidor.
Esta resposta está mais próxima da solução que eu publiquei.
— 31511
Nota para si mesmo: verifique se, ao mudar de arquivos locais para os arquivos CDN do Google, você realmente possui o URL correto. É ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js, não ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery-ui.min.js, que droga.
jQuery "$ (" # datepicker "). datepicker não é uma função"
Corrigi o problema colocando os três arquivos abaixo na seção do corpo do formulário no final.
Você é um salva-vidas, de alguma forma de todas as respostas, foi ESTE que me salvou após 2 dias de luta sem parar.
— Tejas Jaggi 18/06
Se você acha que existe um conflito, pode usar jQuery.noConflict()no seu código. Os detalhes estão nos documentos .
MÁGICA DE REFERÊNCIA - ATALHOS PARA SOLICITAÇÃO
Se você não gosta de digitar o "jQuery" completo o tempo todo, existem alguns atalhos alternativos:
Reatribuir jQuery para outro atalho var $j = jQuery;(Essa pode ser a melhor abordagem se você desejar usar bibliotecas diferentes) Use a seguinte técnica, que permite usar $ dentro de um bloco de código sem sobrescrever permanentemente $:
Nota: Se você usar essa técnica, não poderá usar os métodos Prototype dentro dessa função capsulada que esperam que $ seja $ do Prototype, portanto, você pode optar por usar apenas jQuery nesse bloco. Use o argumento para o evento pronto para DOM:
Nota: Novamente, dentro desse bloco, você não pode usar métodos Prototype
Isso é do final dos documentos e pode ser útil para você
Escolha o óbvio primeiro: você está fazendo referência bem ao arquivo jquery-ui.js?
Tente usar a guia de rede do firebug para descobrir se está carregada ou o código javascript Information \ View da barra de ferramentas do desenvolvedor da Web.
Você tentou usar o Firebug para 1) determinar que não há erros de Javascript e 2) que o elemento #datepicker existe na página?
Provavelmente, ocorreu um erro antes da chamada do datepicker que está impedindo a execução da chamada do datepicker.
— 1kevgriff
Eu sei que este post é bastante antigo, mas, para referência, corrigi esse problema atualizando a versão do datepicker
Vale a pena tentar isso também para evitar horas de depuração.
— Yannickv
Isso não se aplica ao datepicker da interface do usuário do Jquery. O datepicker do Bootstrap é um animal totalmente diferente.
— RedSands 10/10/19
Acabei de ter esse problema e movi as referências e o código JS para o final da página antes que a </body>tag o corrigisse.
Verifique também as permissões do diretório em que você baixa os arquivos. Por algum motivo, quando eu baixei isso, por padrão, ele foi salvo em uma pasta sem acesso permitido! Demorou uma eternidade para descobrir qual era o problema, mas eu apenas tive que alterar a permissão para o diretório e seu conteúdo - configurando-o para TODOS = LER SOMENTE. Funciona muito bem agora.
— Matthew Fries
Encontrei esse problema recentemente - o problema era que eu havia incluído os arquivos da interface do usuário do jQuery na tag head, mas a biblioteca Telerik que eu estava usando incluía o jQuery na parte inferior da tag do corpo (aparentemente, reinicializando o jQuery e descarregando a interface do usuário plugins previamente carregados).
A solução foi descobrir onde o jQuery estava realmente sendo incluído e incluir os scripts da UI do jQuery depois disso.
Acabei de encontrar um problema semelhante. Quando alterei minha referência de script de tags de fechamento automático (ou seja <script src=".." />) para nós vazios (ou seja <script src=".."></script>) , meus erros desapareceram e, de repente, pude referenciar as funções da interface do usuário do jQuery.
Naquela época, eu não sabia que isso era apenas um peido do meu cérebro que não o fechava corretamente para começar. (Estou postando isso simplesmente com a chance de alguém encontrar o problema.)
Alguns arquivos não carregam antes de você ligar.
Por exemplo: Seu código:
Mude para isto:
— David tsang
Eu poderia corrigir esse problema removendo o pacote jquery no _Layout.cshtml
Alterar rodapé para
— jaimenino
Você já tentou usar $ ("# <% = txtDateElementId.ClientID%>"). Datepicker (); em vez de $ ("# txtDateElementId"). datepicker (); ao selecionar um elemento pelo ID usando JQuery.
No meu caso, foi resolvido alterando a ordem de importação dos seguintes scripts: Antes (Não funciona):