【问题标题】:Bootstrap-Datepicker not selecting date when using "setDate"使用“setDate”时,Bootstrap-Datepicker 未选择日期
【发布时间】:2016-05-03 16:43:39
【问题描述】:

我正在尝试让 Bootstarp-Datepicker 工作,我已经很接近了。但是,既然我已经找到了如何设置 startDate 并且已经能够让“自动关闭”工作,我无法让它选择在“setDate”中设置的日期

如果我调出日历,然后手动选择另一个日期,该日期将显示为选中,但 setDate 值不会显示该日期为选中状态。我做了很多搜索,但似乎找不到合适的组合。

顺便说一句:查看 F12 工具时我确实有一个错误,但它显示“加载资源失败:服务器响应 404(未找到)”并且源指向“/fonts/glyphicons-halflings-regular “ 文件。我认为这与它没有任何关系,但我将为此发布一个单独的问题。

这是我的 HTML

<div class="col-md-2 text-left">
    <div id="StartDate" class="input-group date">
        <input class="datepicker form-control" type="text" />
        <span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
    </div>
</div>
<div class="col-md-2">
    <div id="EndDate" class="input-group date">
        <input type="text" class="form-control">
        <div class="input-group-addon">
            <span class="glyphicon glyphicon-th"></span>
        </div>
    </div>
</div>

这是我的 JS。此 JS 将设置日期并使自动关闭工作,但它不会选择使用 setDate 方法设置的日期。

<script type="text/javascript">
    $(function () {
        var startDate = new Date();
        startDate.setDate(startDate.getDate() - 7);
        var endDate = new Date();

        $("#StartDate").datepicker({
            autoclose: true
        }).datepicker("update", startDate);

        $("#EndDate").datepicker({
            autoclose: true
        }).datepicker("update", endDate);
    });
</script>

如果我切换到这个 JS 代码,我可以让 setDate 工作以及获取设置为选择的日期。但是,这会导致自动关闭功能不起作用。

<script type="text/javascript">
    $(function () {
        var startDate = new Date();
        startDate.setDate(startDate.getDate() - 7);
        var endDate = new Date();

        $("#StartDate").datepicker("setDate", startDate);
        $("#StartDate").datepicker("autoclose", true);
        $("#StartDate").datepicker("update");
    });
</script>

【问题讨论】:

    标签: javascript jquery datepicker bootstrap-datepicker


    【解决方案1】:

    AutoClose不工作时,你可以使用这个函数来强制:

    $('#StartDate').datepicker().on('changeDate', function(ev){
        $('#StartDate').datepicker('hide');
    });
    

    $(function () {
            var startDate = new Date();
            startDate.setDate(startDate.getDate() - 7);
            var endDate = new Date();
    
            $("#StartDate").datepicker("setDate", startDate);
            
            $("#StartDate").datepicker("update");
            
            $('#StartDate').datepicker().on('changeDate', function(ev){  
                $('#StartDate').datepicker('hide');
            });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script src="http://eternicode.github.io/bootstrap-datepicker/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
    <link rel="stylesheet" href="http://eternicode.github.io/bootstrap-datepicker/bootstrap-datepicker/css/datepicker.css">
    
    <div class="col-md-2 text-left">
        <div id="StartDate" class="input-group date">
            <input class="datepicker form-control" type="text" />
            <span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
        </div>
    </div>

    【讨论】:

    • 感谢您的代码。由于我从 Visual Studio 中的 MVC 项目开始,它使用的是 MVC 模板附带的捆绑。我刚刚添加了我的 .js 和 .css 文件。我将尝试将其从捆绑中取出并将所有内容直接添加到 _Layout.cshtml 页面并希望能够修复它。
    • 删除捆绑并使用您的参考似乎没有什么不同。因此,只需使用您提供的代码。如果我想出不同的修复方法,我会发布它。
    • @Caverman 不客气,很高兴为您提供帮助。我刚刚添加了对 sn-p 的引用以作为示例并向您展示 函数 的工作原理并强制自动关闭。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 2014-02-04
    • 2014-09-19
    • 1970-01-01
    相关资源
    最近更新 更多