TypeError: $(...).daterangepicker 不是函数

Posted

技术标签:

【中文标题】TypeError: $(...).daterangepicker 不是函数【英文标题】:TypeError: $(...).daterangepicker is not a function 【发布时间】:2018-09-30 13:42:36 【问题描述】:

我无法访问日期范围选择器。当我点击它时,什么都没有发生。在控制台中显示 。 我在其他页面上使用了相同的代码,效果很好。

这是我头部的代码。

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!-- Include Required Prerequisites -->
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="//cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap/3/css/bootstrap.css" />
 
<!-- Include Date Range Picker -->
<script type="text/javascript" src="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css" />
<link rel="stylesheet" href="<?php echo base_url();?>ui/css/custom.css">


<script>
$(function() 

    var start = moment().subtract(29, 'days');
    var end = moment();

    function cb(start, end) 
        $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
    

    $('#reportrange').daterangepicker(
        startDate: start,
        endDate: end,
        ranges: 
           'Today': [moment(), moment()],
           'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
           'Last 7 Days': [moment().subtract(6, 'days'), moment()],
           'Last 30 Days': [moment().subtract(29, 'days'), moment()],
           'This Month': [moment().startOf('month'), moment().endOf('month')],
           'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
        
    , cb);

    cb(start, end);
    
);
</script>

这是我的 php 文件中的代码。

<div id="reportrange" class="pull-right" style="background: #fff; cursor: pointer; padding: 5px 10px; border: 1px solid #ccc; width: 100%">
<i class="glyphicon glyphicon-calendar fa fa-calendar"></i>&nbsp;
<span></span> <b class="caret"></b>

【问题讨论】:

【参考方案1】:

您包含 jQuery 两次。一次在第 2 行,然后在第 5 行。尝试删除其中一个,但确保将其包含在 Bootstrap 之上。

或者,如果您需要两者,您可以考虑使用jQuery.noConflict()

【讨论】:

删除第一个会破坏引导程序,除非您重新排序包含。 我删除了这个... @SalmanKhan - 这对你有用吗? codepen.io/seanvm/pen/PewrmZ【参考方案2】:

在我的情况下(在 laravel mix 上)它应该在 app.js 上“延迟”。 所以解决方案是为 moment 和 daterangepicker.js 添加 defer。 有关延迟工作的更多详细信息,请参阅此 https://html.spec.whatwg.org/multipage/scripting.html#attr-script-defer

【讨论】:

【参考方案3】:

在没有 jQuery OnLoad iffy 的情况下使用此代码。

var start = moment().subtract(29, 'days');
var end = moment();

function cb(start, end) 
    $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));


$('#reportrange').daterangepicker(
    startDate: start,
    endDate: end,
    ranges: 
       'Today': [moment(), moment()],
       'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
       'Last 7 Days': [moment().subtract(6, 'days'), moment()],
       'Last 30 Days': [moment().subtract(29, 'days'), moment()],
       'This Month': [moment().startOf('month'), moment().endOf('month')],
       'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
    
, cb);

cb(start, end);

【讨论】:

现在,控制台中没有错误,但是,如果我尝试单击 datepicker,则没有任何反应。 将此代码粘贴到控制台窗口中,然后重试。 我正在尝试在 power bi 自定义视觉效果中进行类似的处理。它仍然给我同样的错误。 TypeError: jquery__WEBPACK_IMPORTED_MODULE_124__(...).daterangepicker 不是函数 @user3095179 你在那里添加了所需的库? jQuery, daterangepicker.js @MuhammadZubairSaleem package.json 具有这种格式。 “@types/daterangepicker”:“^2.1.17”,“@types/jquery”:“^2.0.41”,“daterangepicker”:“^3.0.5”,“jquery”:“^3.2.1”, ...知道这里是否有问题。我还安装了时刻最新版本。仍然给我同样的错误。

以上是关于TypeError: $(...).daterangepicker 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:“TypeError:函数名称不是 HTMLButtonElement.onclick (/:2:54) 处的函数”

反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map

Django TypeError - TypeError: issubclass() arg 1 必须是一个类

pyspark:TypeError:'float'对象不可迭代

Python 3.8 TypeError: can't concat str to bytes - TypeError: a bytes-like object is required, not 's

TypeError: key 必须是一个字符串,一个缓冲区或一个对象在 typeError 与 GCP 文件存在