代码之家  ›  专栏  ›  技术社区  ›  NoBullMan

引导DateTimePicker未打开

  •  1
  • NoBullMan  · 技术社区  · 7 年前

    我在页面上使用两个日历,开始日期和结束日期,使用引导日期时间选择器。奇怪的是,它在从Visual Studio 2017本地运行时工作正常;但是在部署时,单击文本框或图标没有任何效果。

    我在网上检查了类似的问题,并尝试了所有的建议:使用类名而不是DIV ID,检查JS/CSS的顺序包括…。但没有什么帮助。

    我检查了开发人员控制台的错误,并在下面的行中看到:“eventlog.aspx:353 uncaught typeerror:$(…).datepicker不是函数”:

    $('#divStartDate').datepicker({
    

    我读到,如果有多个对jquery的引用,就会导致这种情况,我看不到它,除非我使用的另一个插件也在使用它。

    这是.NET应用程序,在主文件中我有:

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>
    <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.14.30/js/bootstrap-datetimepicker.min.js"></script>
    
    <script type="text/javascript" src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
    <script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.10.19/sorting/datetime-moment.js"></script>
    
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.14.30/js/bootstrap-datetimepicker.min.js"></script>
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.3.0/css/datepicker.min.css">
    
    <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css">
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
    

    在使用日历的ASPX页面中:

    <div class="col-sm-2">
        <div>
            <label for="tbStartDate">Start Date</label>
            <div id="divStartDate" class="input-group date startdate">
                <input runat="server" clientidmode="static" type="text" id="tbStartDate" class="form-control" style="cursor: pointer">
                <span class="input-group-addon" style="cursor: pointer">
                    <i class="fa fa-calendar" aria-hidden="true"></i>
                </span>
            </div>
        </div>
    </div>
    <div class="col-sm-2">
        <div>
            <label for="tbEndDate">End Date</label>
            <div id="divEndDate" class="input-group date enddate">
                <input runat="server" clientidmode="static" type="text" id="tbEndDate" class="form-control" style="cursor: pointer">
                <span class="input-group-addon" style="cursor: pointer">
                    <i class="fa fa-calendar" aria-hidden="true"></i>
                </span>
            </div>
        </div>
    </div>
    ....
    <script>
        $(document).ready(function () 
            // I tried replacing #divStartDate with .input-group.date.startdate
            $('#divStartDate').datepicker({
                format: 'mm/dd/yyyy',
                useCurrent: true,
                autoClose: true,
                allowInputToggle: true,
                endDate: '+0d',
                ignoreReadonly: true,
                showTodayButton: true,
                viewMode: 'days'
            }).on('changeDate', function (e) {
                $('#hfStartDate').val(e.format());
                $(this).datepicker('hide');
            });
    
            $('#divEndDate').datepicker({
                format: 'mm/dd/yyyy',
                useCurrent: false,
                autoClose: true,
                allowInputToggle: true,
                endDate: '+0d',
                ignoreReadonly: true,
                showTodayButton: true,
                viewMode: 'days'
            }).on('changeDate', function (e) {
                $('#hfEndDate').val(e.format());
                $(this).datepicker('hide');
            });
        });
    </script>
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Haritsinh Gohil    7 年前

    您的代码中有一些错误,应该避免:

    • 包括任何 library 只有一次 ,您已添加 bootstrap-datetimepicker.min.js 2次。
    • 你已经包括了 datetimepicker 图书馆,然后你 应根据 documentation 例如: $('#divStartDate').datetimepicker(); 不如 datepicker() .
    • 使用 maxDate , endDate 不是的有效选项 datetimepicker .
    • 看见 format 选项,你必须给出资本值,因为它指的是 moment.js 格式选项 see here for options .

    现在 解决方案 如下:

    $(document).ready(function () {
            $('#divStartDate').datetimepicker({
                format: 'DD/MM/YYYY',
                useCurrent: true,
                keepOpen: true,
                allowInputToggle: true,
                maxDate: new Date(),
                ignoreReadonly: true,
                showTodayButton: true,
                viewMode: 'days'
            });
    
            $('#divEndDate').datetimepicker({
                format: 'DD/MM/YYYY',
                useCurrent: false,
                keepOpen: true,
                allowInputToggle: true,
                maxDate: new Date(),
                ignoreReadonly: true,
                showTodayButton: true,
                viewMode: 'days'
            });
    });
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.js"></script>
    <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.14.30/js/bootstrap-datetimepicker.min.js"></script>
    
    
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.3.0/css/datepicker.min.css">
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
    
    <div class="col-sm-2">
        <div>
            <label for="tbStartDate">Start Date</label>
            <div id="divStartDate" class="input-group date startdate">
                <input runat="server" clientidmode="static" type="text" data-date-end-date="0d" id="tbStartDate" class="form-control" style="cursor: pointer">
                <span class="input-group-addon" style="cursor: pointer">
                    <i class="fa fa-calendar" aria-hidden="true"></i>
                </span>
            </div>
        </div>
    </div>
    <div class="col-sm-2">
        <div>
            <label for="tbEndDate">End Date</label>
            <div id="divEndDate" class="input-group date enddate">
                <input runat="server" clientidmode="static" type="text" data-date-end-date="0d" id="tbEndDate" class="form-control" style="cursor: pointer">
                <span class="input-group-addon" style="cursor: pointer">
                    <i class="fa fa-calendar" aria-hidden="true"></i>
                </span>
            </div>
        </div>
    </div>