未捕获的TypeError:$(...)。datepicker不是函数(匿名函数)

时间:2016-03-24 18:13:52

标签: javascript jquery django datepicker

我发现堆栈溢出的答案很少,但仍然无法解决我的问题。 我在Django上运行,但我不认为它与此错误有关。

我尝试将工作作为日期选择器java脚本,但我收到错误

1:27 Uncaught TypeError:$(...)。datepicker不是函数(匿名函数)@ 1:27fire @jquery-1.9.1.js:1037self.fireWith @jquery-1.9.1.js: 1148jQuery.extend.ready @jquery-1.9.1.js:433completed @ jquery-1.9.1.js:103 jquery-2.1.0.min.js:4 XHR完成加载:POST“https://localhost:26143/skypectoc/v1/pnr/parse”。l.cors.a.crossDomain.send @jquery-2.1.0.min.js:4o.extend.ajax @ jquery-2.1.0.min.js:4PNR.findNumbers @ pnr.js:43parseContent @ contentscript.js:385processMutatedElements @ contentscript.js:322

这是我的所有剧本:

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />


<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>

<script type="text/javascript">
$(document).ready(function() {
    $('.dateinput').datepicker({ format: "yyyy/mm/dd" });
}); 
</script>

      <!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

<script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script>
<script src="http://getbootstrap.com/dist/js/bootstrap.min.js"></script>
<!-- Just to make our placeholder images work. Don't actually copy the next line! -->
<script src="http://getbootstrap.com/assets/js/vendor/holder.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="http://getbootstrap.com/assets/js/ie10-viewport-bug-workaround.js"></script>
 <script type="text/javascript">
              $(document).ready(function() {
                  $("#extra-content").hide();
                  $("#toggle-content").click(function(){
                      $("#extra-content").toggle();
                  });
              });
 </script>            

任何反馈都将非常感激

6 个答案:

答案 0 :(得分:52)

出了什么问题?

第一次包含jQuery时:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>

第二个脚本将自身插入jQuery,并“添加”$(...).datepicker

但是你再次包括jQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

它解除了插入,因此$(...).datepicker变得未定义。

虽然在此之前出现了第一个$(document).ready块,但是在加载所有脚本之前不执行匿名回调函数体,然后$(...)(准确地说window.$)正在引用到最近加载的jQuery。

如果您立即调用$('.dateinput').datepicker而不是$(document).ready回调,则不会遇到此问题,但是您需要确保目标元素(类dateinput)已经在脚本之前的文档中,并且通常建议使用ready回调。

解决方案

如果你想使用jquery-ui中的datepicker,那么在引导程序之后包含jquery-ui脚本可能是最有意义的。 jquery-ui 1.11.4与jquery 1.6+兼容,因此它可以正常工作。

或者(特别是如果您不使用jquery-ui进行其他任何操作),您可以尝试bootstrap-datepicker

答案 1 :(得分:0)

您只需要添加三个文件和两个css链接。你也可以cdn's。 js文件和css文件的链接如下: -

  1. jQuery.dataTables.min.js
  2. dataTables.bootstrap.min.js
  3. dataTables.bootstrap.min.css
  4. 自举-datepicker.css
  5. 自举-datepicker.js
  6. 如果您在项目中使用bootstrap,它们是有效的。

    我希望这会对你有所帮助。 问候, Vivek Singla

答案 2 :(得分:0)

错误是因为您在两个地方包含脚本链接,这些链接将执行日期选择器的覆盖和重新初始化

&#13;
&#13;
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />


<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>

<script type="text/javascript">
$(document).ready(function() {
    $('.dateinput').datepicker({ format: "yyyy/mm/dd" });
}); 
</script>

      <!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
&#13;
&#13;
&#13;

因此,请排除 src =&#34; https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"

或 的 SRC =&#34; HTTP://code.jquery.com/ui/1.11.0/jquery-ui.js"

它会起作用..

答案 3 :(得分:0)

包含多个对Jquery库的引用是导致错误的原因仅包含对Jquery库的一个引用即可解决此问题

答案 4 :(得分:0)

如果您使用的是ASP.NET MVC

打开布局文件“ _ Layout.cshtml” 或您的自定义文件

在代码部分,如下所示:

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

删除行“ @ Scripts.Render(“〜/ bundles / jquery”)

(在您看到的代码的一部分)作为最新行,如下所示:

@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")

这对我有帮助,希望对您也有帮助。

答案 5 :(得分:-3)

发生此错误,因为未定义该功能。 在我的情况下,我调用了datepicker函数,但没有包含datepicker js文件,那时我得到了这个错误。