【问题标题】:jQuery Datepicker and Timepicker for same input field to popup one after another相同输入字段的jQuery Datepicker和Timepicker一个接一个弹出
【发布时间】:2010-11-04 22:21:34
【问题描述】:

我在 2 个单独的输入字段中有一个 Datepicker 和一个 Timepicker,但我需要将 2 个字段输入合并为一个以进行数据库调用。想知道我是否只能为两个控件使用 1 个输入字段?

首先调用日期选择器,用户将单击所需的日期并输入值,然后时间选择器将弹出并附加用户在第一个操作中选择的日期。

我正在使用jQuery UI Datepicker 和Timepickr 插件

所以我有这样的东西

<input class="datepicker">2009-06-22</input>
<input class="timepicker">12:00:00</input>

但是想要这样的东西

<input class="datetimepicker">2009-06-22 12:00:00</input>

<script type="text/javascript">
// Date and Time picker same input field
$("#datepicker").datepicker( {
   dateFormat: 'yy-mm-dd',
   onClose: function(dateText, inst) {
      var tempDate = $("#datepicker").val(dateText);
      $("#datepicker").timepickr({
         onClose: function(timeText, inst) {
            var tempTime = $("#datepicker").val(dateText);  
            alert("Temp Time: '" + tempTime.val() + "'");
            $("#datepicker").val(tempDate.val() + ' ' + tempTime.val());
         }  
      });                                   
   }
});             
</script>

【问题讨论】:

标签: jquery datepicker datetimepicker timepicker


【解决方案1】:

我想推荐Any+Time(TM),您可以在其中将单个字段中的日期/时间与一个易于使用(而且快速!)的日期/时间组合选择器组合起来。

【讨论】:

  • 版本 4 刚刚发布,具有许多新功能,包括对 TIME ZONES 的支持(尝试在任何其他选择器中找到它!)、jQuery 选择器/链接和易于删除(以减少内存泄漏和支持更多动态页面)。访问ama3.com/anytime 了解更多信息并下载代码。如果您遇到任何问题或有任何建议,请使用该网站上的联系链接。谢谢!
  • Andrew,我刚刚开始根据您的建议使用 AnyTime 选择器。很棒的工具! :) 如果其他人发现了这篇文章,并且正在使用带有内联编辑的 jqgrid,AnyTime 选择器就不能完全开箱即用。如果您打开一个选择器然后关闭该行,然后返回到相同的选择器字段,您将收到类似“无法创建另一个 AnyTime 选择器”的错误。我发现解决此问题的方法是传递 $('input').AnyTime_noPicker();到editRow()的oneditfunc。
  • 谢谢,杰西卡!如果其他人有经验,请不要犹豫,使用网站上的联系表格!
  • Any+Time 为每个 Any+Time 输入为 UI 附加一个新的隐藏 div(与重用隐藏 div UI 的 jQuery UI 日期选择器不同),这使得设计糟糕的 MSIE6 中的性能下降很多。所以如果需要支持 MSIE6,请不要使用 Any+Time!
  • Any+Time 为每个输入创建一个新的小部件,因为每个输入可以有不同的格式,因此需要不同的按钮。这是我第一次听说性能下降,但我会调查问题,并在必要时寻找不会破坏库灵活性的可能解决方案。
【解决方案2】:

您可以将事件绑定到日期选择器的 onClose() 事件。让它打开你的时间选择器。让日期选择器写入输入的基值,并让时间选择器将其值附加到相同的输入后面的空格。

  1. 将日期选择器绑定到输入。
  2. 将打开时间选择器的方法附加到日期选择器的 .onClose() 事件中。
  3. 将时间选择器值(前面带有空格)附加到输入值。

更新:以下是更新问题的更新结果。

文档提供了一个简短的示例,说明如何将事件/操作绑定到日期选择器的关闭:

$('.selector').datepicker({
   onClose: function(dateText, inst) { ... }
});

在本例中,您可以使用“onClode:”之后的函数将值写入输入,并弹出时间选择器。

$(".selector").datepicker({
  onClose: function(dateText, inst) {
    $(".selector").val(dateText);
    // Raise Timepickr
  }
});

【讨论】:

  • 我喜欢这个选项的流程,但从来没有绑定过任何东西。我已经编辑了上面的帖子,向您展示了我正在使用的代码。很基础的
  • hmm 如何调用时间选择器?
  • 对不起 - 我不知道。我从未使用过那个特定的 3rd 方插件。您必须查阅它的文档,或联系插件作者。老实说,寻找一个不同的 3rd 方插件可能更容易,它可以将日期和时间都内置到一个插件中——比如 razum.si/jQuery-calendar/TimeCalendar.html 或 Alexander 的回复中提到的插件。
  • 您可以尝试将该插件绑定到 $(".selector") 之后的 $(".selector").val(dateText);行,然后立即调用 $(".selector") 的 .click() 或 .focus() 方法。这可能会做到。
  • 我已经更改了一些代码但仍有问题,请参阅新的编辑
【解决方案3】:

不是 jQuery,但它适用于有时间的日历:JavaScript Date Time Picker。

只需绑定点击事件即可弹出:

$("#date").click(function() {
    NewCssCal($(this).attr('id'), 'mmddyyyy', 'dropdown', true, 12);
});

我个人觉得这更容易理解。但显然,您有很多选择,有多个 jquery 插件可用于完成您的工作。

【讨论】:

    【解决方案4】:

    您可以尝试将两个控件的输入合并为一个,例如

    $("#datetime").focus(function() {
        var mydate = $("#date").val();
        var mytime = $("#time").val();
        if(mydate && mytime && !this.value) {
            this.value = mydate + " " + mytime;
        }
    });
    

    【讨论】:

      【解决方案5】:

      这里有一个替代方案:

      http://www.r-ip.ru/dev/datetimepicker/index.html

      $('#datetimepicker').datetimepicker({ 
        dateFormat: 'yy-mm-dd',
        timeFormat: ' hh:ii:ss' 
      });
      

      【讨论】:

      • 没有说明。此外,提供的链接上的时间选择器界面很糟糕。我花了几秒钟才弄清楚单击一个值会增加它。不管怎样,我已经删除了我的反对票。
      • 我同意它具有我所要求的功能,但不包括我正在使用的我想使用的插件。您提供的解决方案很好,但我同意时间控制有点混乱。不过谢谢
      • 该链接现已失效。
      • 那个链接在我的防病毒软件上显示“Trojan Imposter”;)
      【解决方案6】:

      请查看link。

      我更新了一些布局问题并添加了第二个滑块,如果{showTime:true, time24h:true} 将处于活动状态

      您可以通过 Google Code 找到原始版本。

      【讨论】:

        猜你喜欢
        • 2014-07-30
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 2017-12-27
        • 1970-01-01
        • 2011-10-28
        • 2011-11-16
        相关资源
        最近更新 更多