g.size()不是一个函数 - Jquery错误

18

我一直在尝试使用Bootstrap DateTimePicker,我的脚本中已经包含了Moment JS、bootstrap-date-time js和bootstrap js等所有组件,但是我却遇到了"g.size()不是一个函数"的错误。我正在尝试运行下面的函数:

$(function(){
    $('#datetimepicker').datetimepicker();
  });


3
如果您使用的是jq3.x版本,$.fn.size()方法已经被移除了。如果是这样,请降级到任何旧版本的jq(2.x?)。但是也许这与您的问题无关,因为根据您的问题没有提供足够的信息,很难猜测。 - A. Wolff
我编辑了问题,您能再次检查一下吗? - Sajak Upadhyaya
其中一些脚本可能已通过Google Closure Compiler进行高级优化模式的传递,而没有指定所有的外部引用。 - Arnauld
我不知道为什么你会被踩 - 我在尝试使用bootstrap datetimepicker时也遇到了相同的错误(如此处所示:https://eonasdan.github.io/bootstrap-datetimepicker/Installing/,但是我是在现有的bootstrap项目中开始使用)- 我还没有找到问题的根源,现在我将选择另一个日期/时间选择器 - 如果我找到一个好的选择器,我会在这里回复的。 - kris
到目前为止,我仍然无法解决这个问题。我正在使用 Angular Bootstrap 日期时间选择器。 - Sajak Upadhyaya
显示剩余3条评论
5个回答

22

我的解决方案是寻找一个真正工作的不同的日期时间选择器。

我找到了这个:https://github.com/xdan/datetimepicker,使用起来非常容易:

  1. 从github下载zip文件

  2. 包含以下文件:

    <link href="./js/datetimepicker-master/build/jquery.datetimepicker.min.css" rel="stylesheet"> <script src="./js/datetimepicker-master/build/jquery.datetimepicker.full.min.js"></script>

  3. 这个HTML:

    <input id="datetimepicker" type="text" />

  4. 和这个JS:

    $.datetimepicker.setLocale('en');
    $('#datetimepicker').datetimepicker();

用这种方法,我花费的时间只有尝试让Bootstrap日期时间选择器停止给我报错的一小部分。当然,还有很多其他的日期时间选择器可供选择:

请参见此帖子以获取更多选项: whats-a-good-javascript-time-picker


1
是的,我找不到解决方案,所以我转而使用Angular Bootstrap日期时间选择器,而不是Jquery。 - Sajak Upadhyaya

12

.size()已在jQuery 3中移除,请使用.length代替。

在您的示例中,将g.size()替换为g.length


5
已修复在版本 .47 中:https://cdnjs.com/libraries/bootstrap-datetimepicker/4.17.47 - MushyPeas
谢谢 @MushyPeas,你帮我省去了一场头痛。我甚至没想到要检查更新版本。 - nugenjs

9

g.size错误是开发人员已知的问题,存在于较新版本的jquery中。

如果您想使用该datetimepicker,则需要回退到jquery 2.1.4或更早版本。

该漏洞在此处列出:

https://github.com/Eonasdan/bootstrap-datetimepicker/issues/1714

我的 Rails 应用出现了这个错误,让我来到了这里。我之前使用的是 //= require jquery3,将其改为 //= require jquery2' 就解决了这个问题。 - mohnstrudel

9
请使用最新的bootstrap-datetimepicker来解决此问题。我已经使用了以下版本,错误已经消失。
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>

使用了jQuery v3.3.1


我的问题是,在使用Bootstrap 3时,我错误地认为需要使用bootstrap-datetimepicker3.x.x版本,但这是不正确的。升级到4.x.x版本以及相应的CSS修复了我的问题。 - James Mudd
这解决了我的问题!!我使用的是4.17.37版本。谢谢!!! - Zaehos

3
检查您的jQuery版本。我使用的是最新版本(3.1.1),一些插件在使用时会抛出此错误。
根据文档:自jQuery 1.8起,.size()方法已过时。请改用.length属性。
(它在3.0中被删除)
因此,简单地回滚到3.0之前的版本就行了。
编辑:哎呀,在评论中,A. Wolff说。
编辑2:另外一件事……如果您想保持jquery版本最新,可以将jquery-migrate插件包含到您的项目中-https://github.com/jquery/jquery-migrate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接