代码之家  ›  专栏  ›  技术社区  ›  Salman Khan

类型错误:$(…)。daterangepicker不是函数

  •  3
  • Salman Khan  · 技术社区  · 6 年前

    我无法访问日期范围选取器。当我点击它时,什么都没有发生。在控制台中显示TypeError:$(…)。daterangepicker不是函数。 我在另一个页面上使用了相同的代码,运行良好。

    enter image description here

    这是我头脑中的代码。

    <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>
    
    3 回复  |  直到 6 年前
        1
  •  8
  •   Seanvm    6 年前

    您两次包含jQuery。一次在第2行,另一次在第5行。尝试删除其中一个,但请确保将其包含在引导程序之上。

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

        2
  •  1
  •   Eko Syahputra    2 年前

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

        3
  •  -2
  •   Muhammad Zubair Saleem    6 年前

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

    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);