16

我在 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>
4

6 回答 6

16

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

于 2010-04-01T14:23:44.253 回答
1

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

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

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

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

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

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

$(".selector").datepicker({
  onClose: function(dateText, inst) {
    $(".selector").val(dateText);
    // Raise Timepickr
  }
});
于 2009-06-22T17:31:35.747 回答
1

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

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

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

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

于 2011-09-18T23:19:32.120 回答
0

这是一个替代方案:

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

$('#datetimepicker').datetimepicker({ 
  dateFormat: 'yy-mm-dd',
  timeFormat: ' hh:ii:ss' 
});
于 2009-06-22T17:27:37.810 回答
0

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

$("#datetime").focus(function() {
    var mydate = $("#date").val();
    var mytime = $("#time").val();
    if(mydate && mytime && !this.value) {
        this.value = mydate + " " + mytime;
    }
});
于 2009-06-22T17:38:52.367 回答
0

请检查链接

我更新了一些布局问题并添加了第二个滑块,如果{showTime:true, time24h:true}

您可以在Google Code中找到原始版本。

于 2010-09-15T15:07:32.260 回答