jQuery Datepicker onChangeMonthYear追加

时间:2012-01-05 08:16:00

标签: jquery datepicker

我有以下问题。 我有一个jquery Datepicker,并希望在datepicker打开时显示一些其他信息。 当我使用Firebug的控制台执行以下操作时,它按预期工作

$("#ui-datepicker-div").append("additional text");

但是当我使用“onChangeMonthYear”时做同样的事情 - 选项:

$( "#datepicker" ).datepicker({
    onChangeMonthYear: function(year, month, inst) {
        $("#ui-datepicker-div").append("additional text");
    }
});

它不会显示“附加文字”。

有什么建议吗?!

由于

2 个答案:

答案 0 :(得分:2)

问题是当onChangeMonthYear事件触发时,新日历表尚未创建。所以它附加了文本,但随后整个内容被新表替换。

使用超时附加文本,这将确保插件在插入之前重新创建内容。

var appendTimeout;

function appendText(text) {
    clearTimeout(appendTimeout);
    appendTimeout= setTimeout(function() {
        $('#ui-datepicker-div').append('<div>' + text + '</div>');
    }, 50);
}

$("#datepicker").datepicker({
    beforeShow: function() {
        appendText('initialAppendedText');
    },
    onChangeMonthYear: function(year, month, inst) {
        appendText('whenMonthIsChanged');
    }
});

我设置了超时10毫秒,但你可以增加一点这个值。

jsfiddle

上的工作示例

答案 1 :(得分:0)

'#ui-datepicker-div'由datepicker脚本创建,只要datepicked需要,它就可以刷新。附加的文本可以随时覆盖。 您应该在'#datepicker'元素之外创建自己的占位符,在其中附加文本,并使用CSS定位以使其看起来正确。