1

我正在使用 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);

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

所以,我的问题是,

如何在不更改显示的文本框日期(01/01/2001)的情况下使用今天的日期(11/08/2013)打开我的日期选择器?

4

2 回答 2

0

看起来 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/

于 2013-11-08T07:00:08.590 回答
0

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

$( "#sent_date" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFOrmat: "mm/dd/yy",
    beforeShow: function(el, dp) {
        dp.datepicker("setDate", 0);
    }
});
于 2013-11-08T02:06:33.723 回答