【问题标题】:Issue opening jQuery UI datepicker with current date使用当前日期打开 jQuery UI 日期选择器问题
【发布时间】:2013-11-08 01:57:55
【问题描述】:

我正在使用 jQuery UI 日期选择器。

<input id="sent_date" type="text" value="01/01/2001">

这样初始化。

$( "#sent_date" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFOrmat: "mm/dd/yy",
    defaultDate: new Date()
});

现在日期选择器在“01/01/2001”打开。如果我像这样更改我的 JavaScript

$( "#sent_date" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFOrmat: "mm/dd/yy",
    defaultDate: new Date()
}).datepicker("setDate", 0);

现在日期选择器在“2013 年 11 月 8 日”打开。但我的文本框也更改为“11/08/2013”​​
JSFiddle:http://jsfiddle.net/codovations/3KutM/

所以,我的问题是,

我如何用今天的日期打开我的日期选择器(2013 年 11 月 8 日),不改变显示的文本框日期(01/01/2001)? p>

【问题讨论】:

  • 在日期选择器的beforeShow:函数中设置日期。

标签: jquery jquery-ui datepicker


【解决方案1】:

使用beforeShow 选项更新日期选择器打开的日期。

$( "#sent_date" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFOrmat: "mm/dd/yy",
    beforeShow: function(el, dp) {
        dp.datepicker("setDate", 0);
    }
});

【讨论】:

  • 如果我的问题不够清楚,我很抱歉。 $(el).datepicker("setDate", "0");.datepicker("setDate", "0"); 不会工作。我不想更改input.value
  • 我不确定是否有办法将输入中的日期与日期选择器打开的日期分开。
【解决方案2】:

看起来在 JQuery UI DatePicker 中毕竟没有 afterShow 方法。由于猴子修补似乎有点牵强,最终像这样串联使用 beforeShow 和 onClose 事件。

var elm = {}, oldDate = "";
$(".dp-date").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFOrmat: "mm/dd/yy",
    defaultDate: new Date(),
    beforeShow: function (el, dp) {
        elm = $(el);
        oldDate = $.trim(elm.val());
        elm.val("");
    },
    onClose: function (dateText, dp) {
        if ($.trim(elm.val()) === "") {
            elm.val(oldDate);
        }
        oldDate = "";
    }
});

JSFiddle:http://jsfiddle.net/codovations/4KSKr/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2021-11-05
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多