使 eternicode 日期选择器在点击时打开,而不是焦点

Posted

技术标签:

【中文标题】使 eternicode 日期选择器在点击时打开,而不是焦点【英文标题】:Make eternicode datepicker open on click, not focus 【发布时间】:2014-01-05 21:13:27 【问题描述】:

eternicode twitter bootstrap datepicker 会在其附加到的<input> 字段获得焦点 时立即弹出,您可以通过点击official demo page 上的日期选择器字段来查看。

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

如何防止它在焦点上弹出?

【问题讨论】:

【参考方案1】:

在当前版本的库中,您想要做的事情没有官方支持。文档列表 all the kinds of markup you can instantiate a datepicker on 以及产生的行为是什么。很明显,在 <input> 元素上实例化日期选择器时,

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

没有可以实例化日期选择器的标记,它可以轻松地为您提供所需的内容。也没有任何configuration options 可以让您选择触发日期选择器出现的事件。

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

最简单的方法是像往常一样在<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');
);

【讨论】:

【参考方案2】:

我的符号与演示中的相同:

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

【讨论】:

以上是关于使 eternicode 日期选择器在点击时打开,而不是焦点的主要内容,如果未能解决你的问题,请参考以下文章

内联日期选择器在第二次尝试时崩溃

如何使日期选择器可见?

jquery mobile中的日期选择器在第二页中添加时重复

Ng2 Bootstrap 的日期选择器在无法读取 getFullYear() 时不断抛出错误

angular-ui:日期选择器在显示按钮时似乎挂起 angularjs

日期选择器在文本字段 iOS 8 上崩溃