5

eternicode twitter bootstrap 日期选择器<input>会在它附加到的字段获得焦点后立即弹出,您可以通过在官方演示页面上的 datepicker 字段上单击来查看。

相反,我希望它只在click上打开。理想情况下,日期选择器只会在单击日历图标时弹出。

如何防止它突然出现在焦点上?

4

2 回答 2

10

在当前版本的库中,您想要做的事情没有官方支持。文档列出了您可以在其上实例化日期选择器的所有类型的标记以及产生的行为。很明显,在<input>元素上实例化日期选择器时,

聚焦输入(单击或切换)将显示选择器。

没有标记可以实例化一个日期选择器,它可以轻松地为您提供您想要的东西。也没有任何配置选项可让您选择哪些事件将触发日期选择器出现。

因此,要执行您想要的操作,需要对库进行一些逆向工程。幸运的是,这很容易。

最简单的方法是像通常那样实例化日期选择器<input>,然后自己摆脱focus处理程序并用处理程序替换它click

$('#my-input').datepicker()
              .off('focus')
              .click(function () {
                  $(this).datepicker('show');
              });

这非常适用于最新版本的库,如http://jsfiddle.net/E4K56/1/所示

如果您想要触发日期选择器外观的额外元素(如日历按钮),您可以类似地将处理程序附加到它们:

$('#some-button').click(function () {
    $('#my-input').datepicker('show');
});
于 2013-12-21T12:32:25.047 回答
0

我有与演示相同的符号:

<label for="datepickerFrom" class="control-label input-group">Set the date from:</label>
<div class="form-group">
    <div class='input-group date' id='datepickerFrom'>
        <input type='text' class="form-control" />
        <span class="input-group-addon">
            <span class="glyphicon glyphicon-calendar"></span>
        </span>
    </div>
</div>

然后在输入单击时添加添加事件:

var options = {
    language: 'cs'
}
$('#datepickerFrom').datetimepicker(options);
$('#datepickerFrom input').off('focus')
    .click(function () {
        $(this).parent().data("DateTimePicker").show();
    })
于 2014-10-19T12:23:04.490 回答