仅使用图标打开 datetimepicker

Posted

技术标签:

【中文标题】仅使用图标打开 datetimepicker【英文标题】:Open datetimepicker with icon only 【发布时间】:2015-10-06 06:35:56 【问题描述】:

我目前在一个项目中使用Trent Richardson's datetimepicker。它链接到一个文本框,因此当您单击文本框时,选择器会弹出,您可以选择时间或手动输入内容。

我的问题:如何在文本框的“内部”或文本框的边缘添加一个图标,以便您可以在不打开日期的情况下点击文本框时间选择器,或者打开带有图标的日期/时间选择器,然后它将根据您的选择填充文本框?因此,您可以选择手动输入时间而不出现选择器或仅使用选择器。

bootstrap 日期/时间选择器有这个功能,但是我需要使用 jQuery 而不是这个项目的 bootstrap。

我找到了this question,这很相似,但从图标和文本框启动选择器。

【问题讨论】:

我不知道这个答案是否有帮助? ***.com/questions/1112035/… 【参考方案1】:

我已经更新了唯一的图标日期选择器显示的小提琴;

http://jsfiddle.net/uDVwx/33/

Jquery 代码

$(document).ready(function() 

    $(function() 

        $("#from-datetime").datetimepicker(
            showOn: 'both',
            buttonImage: 'http://testsite.shadownetwest.com/datepicker4/development-bundle/demos/images/calendar.gif',
            buttonImageOnly: true,
            changeMonth: true,
            changeYear: true
        ) .click(function() 
      $("#ui-datepicker-div").hide();
    );

        $(".ui-datepicker-trigger ").click(function()$("#ui-datepicker-div").show());

    );

);

HTML 代码

<fieldset id="fieldset">
    <dl>
        <dt><label for="from-datetime">From: </label></dt>
        <dd><input type="text" value="" id="from-datetime" name="from-datetime"/></dd>
    </dl>

</fieldset>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.js"></script>

<script type="text/javascript" src="http://trentrichardson.com/examples/timepicker/jquery-ui-timepicker-addon.js"></script>

【讨论】:

有没有简单的方法来改变buttonImage的大小?有没有类似.ui-datepicker-icon 类的东西可以应用css? @lg22woo 我认为您可以使用 class .ui-datepicker-trigger 来设置图标的高度和宽度【参考方案2】:

您应该能够将按钮上的 onclick 事件绑定到 datepicker 实体的创建。例如,

$(document).ready(function() 
    $("#myButton").click = initiate;
);

function initiate() 
    $("#datepickerarea").datepicker();

拥有id="myButton" 的按钮(或任何你喜欢的),当它被点击时,它会产生一个新的日期选择器。如果您希望按钮成为切换按钮,则必须跟踪 datepicker 状态,如果它已经存在,则将其删除。

function initiatie() 
    if($("#filter_date").datepicker( "widget" ).is(":visible")) 
        $("#datepickerarea").datepicker("destroy");
     else 
        $("#datepickerarea").datepicker();
    

编辑:在您告诉它初始化之前,日期选择器不会初始化。此代码将停止日期选择器的启动,因为我们正在绑定一个事件(特别是 onclick 事件)来开始创建日期选择器。如果没有人点击按钮,日期选择器根本不会启动

EDIT2:抱歉,我对 datepicker 工作原理的记忆有点傻。您应该通过在 div 而不是输入框上开始创建来将 datepicker 初始化为 INLINE 元素。即

<div id="datepickerarea"></div>
<input type="text" id="myinputbox" />

和 JS

$("#datepickerarea").datepicker( altField: "myinputbox");

这会将日期选择器作为一个更永久的元素,并将用户选择的任何内容放入输入字段。

【讨论】:

用图标打开没问题,但是如何防止在点击文本框时打开呢? @lg22woo 对不起,我误解了,我编辑了我的答案以获得更多你想要的东西。 感谢您的快速响应——我们越来越近了,但这仍然不是我想要做的;该按钮现在创建选择器,但您仍然需要单击它所绑定的文本框才能打开/关闭它。澄清一下:我只想要打开/关闭选择器的按钮,以及选择输出到文本框的日期/时间。

以上是关于仅使用图标打开 datetimepicker的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用引导图标?

无法使用仅适用于 Photoshop 的纯色图标

使用仅带有真棒字体的标记图标,没有周围的气球

本地通知仅在 iPhone 上打开应用程序时出现在通知中心

使用意图传递数据,仅发送文本而不是数字/图标

Datatables 1.10 仅通过单击排序图标