选择日期后,Bootstrap datepicker不会自动关闭

时间:2014-03-19 17:36:29

标签: javascript jquery twitter-bootstrap datepicker

我使用最新的Bootstrap datepicker.js。一切正常,但是当我从下拉列表中选择一个日期时,它不会自动关闭它。我搜索了网页并尝试在我的javascript中使用以下功能,如下所示:

 $('#selectDate').datepicker({
    autoclose: true
}).on('changeDate', function (ev) {
    (ev.viewMode == 'days') ? $(this).datepicker('hide') : '';      
});

但是当我使用谷歌Chrome开发工具时,我意识到ev.viewmode未定义。我不确定如何前进。

12 个答案:

答案 0 :(得分:21)

试试这个:

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

<强>更新

当您使用github上存在的更新版本的datepicker时,

autoclose正常工作:

https://github.com/eternicode/bootstrap-datepicker

答案 1 :(得分:13)

我添加 autoclose:true,(最后使用半逗号并且有效)

 $('.datepicker').datepicker({
    format: 'dd/mm/yyyy',
    todayHighlight:'TRUE',
    autoclose: true,
})

答案 2 :(得分:10)

以上都没有为我工作,但是覆盖datepicker默认选项就像魅力一样,并且是一个单行:

$.fn.datepicker.defaults.autoclose = true;

答案 3 :(得分:9)

试试这个:

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

答案 4 :(得分:7)

如果您有多个已应用了datepicker的文本框,那么旧的解决方案可能会导致问题, 请试试这个,

$('.datepicker').datepicker({
     format: "dd/mm/yyyy",
     autoclose: true,
}).on('changeDate', function (ev) {
     $(this).datepicker('hide');
});

请注意,https://github.com/eternicode/bootstrap-datepicker/issues/500

  

注意:别忘了,我们正在使用jquery的类选择器,所以你   需要将datepicker类应用于您的文本框。

答案 5 :(得分:2)

  1. 只需打开bootstrap-datepicker.js
  2. 即可
  3. find:var defaults = $ .fn.datepicker.defaults (在我的案例中为1391行)
  4. 设置autoclose:true
  5. 保存并刷新您的项目,这应该做。

答案 6 :(得分:2)

对我来说,它最终是bootstrap-datepicker文档中的拼写错误。 而不是“autoclose:true”,它是“autoClose:true”。

希望它有所帮助。

答案 7 :(得分:0)

// 10000%的工作 转到bootstrap-datepicker.js文件

搜索:

'mousedown touchstart': $.proxy(function(e){
                    // Clicked outside the datepicker, hide it
                    if (!(
                        this.element.is(e.target) ||
                        this.element.find(e.target).length ||
                        this.picker.is(e.target) ||
                        this.picker.find(e.target).length
                    )) {
                        this.hide();  //remove this
                    }
                }, this)
            }]
        ];
    },

答案 8 :(得分:0)

当您将鼠标悬停在带有defaultdatepicker类的div上时。日历控件将出现。在Mouseleave上,它会消失。

 $(document).on("focus", ".defaultdatepicker", function () {

        $(this).datepicker({
            format: 'dd/mm/yyyy',
            todayHighlight: 'TRUE',
            autoClose: true,
        });

        $('#datepicker').css({ "opacity": "1" });
    });

    $('.defaultdatepicker').on('mouseleave', function () {
        $('.datepicker').fadeOut(function () {
            $('.formattedStartDate').attr('class', 'formattedStartDate');

            $('#datepicker').css({ "opacity": "0" });
        });
    });

答案 9 :(得分:0)

这对我有用。

$(".date-picker").datepicker( {
    format: "yyyy-mm-dd",
}).on('change', function (ev) {
    $(this).datepicker('hide');
});

答案 10 :(得分:0)

尝试一下。对我来说有用。

<input data-auto-close="true" type="text" class="datepicker-here"/>

答案 11 :(得分:-1)

这对我有用

$(".date-picker").change(function() { 
    setTimeout(function() {
        $(".date-picker").datepicker('hide'); 
        $(".date-picker").blur();
    }, 50);
});